راهنمای راه‌اندازی پوش اندروید در Flutter

با خواندن این راهنما، در انتها شما می‌توانید SDK پوش‌نوتیفیکیشن نجوا را از طریق Flutter به اپلیکیشن اندرویدی خود اضافه کنید، همچنین می‌توانید راهنمای زیر را در GitHub نجوا مشاهده کنید. در صورتی که در هر مرحله از فرآیند نصب با مشکلی روبرو شدید، با تلگرام پشتیبانی نجوا در ارتباط باشید.

پیاده‌سازی

برای پیاده سازی نجوا در پروژه خود باید پلاگین نجوا را به پروژه خود اضافه کنید.

فایل pubspecs.yaml را باز کرده و در بخش dependencies کد زیر را قرار دهید.

najvaflutter: ^1.1.5

سپس گزینه dependency های خود را بروزرسانی کنید

اندروید استودیو : گزینه Packages get را از بالای صفحه سمت راست انتخاب کنید تا dependency ها بروزرسانی شوند

خط فرمان:

$ flutter pub get
$ flutter pub upgrade

تغییرات در کد

برای استفاده از پلاگین نجوا در کد دارت خود یک کلاس با نام Najva بسازید و از کلاس NajvaPlugin ارث ببرید.

class Najva extends NajvaFlutter {

}

کلاس NajvaFlutter سه تابع با نام های init  , initUserHandling وgetSubscribedToken دارد.

با صدا زدن تابع init و پاس دادن مقدار های مناسب کتابخانه نجوا شروع به کار خواهد کرد و شما میتوانید نوتیفیکیشن دریافت کنید.

 
init(CAMPAIGN_ID,WEBSITE_ID,API_KEY);

شما می توانید در پنل نجوا مقادیر campaignId, websiteId, apiKey  را در قسمت تنظیمات اپلیکیشن خود، مطابق تصویر زیر مشاهده کنید.

پیاده‌سازی SDK نجوا

برای دسترسی به لوکیشن کاربران کد زیر را به فایل AndroidManifest.xml اضافه کنید.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

توجه داشته باشید که در اندروید 6 و بالاتر دسترسی به لوکیشن باید از کاربر درخواست شود. برای درخواست دسترسی در فلاتر می توانید از این پلاگین استفاده کنید.

دریافت توکن کاربران

با صدا زدن تابع initUserHandling پلاگین نجوا هرگاه که توکن نجوا کاربر دریافت شود توکن به تابع onUserSubscribed داده می‌شود و تابع فراخوانی می‌شود.

initUserHandling();
@override
  void onUserSubscribed(String token) {
        print(token);
    }

برای دریافت مستقیم توکن کاربر می توانید از دستور زیر استفاده کنید. دقت کنید که اگر توکن کاربر از سرور نجوا دریافت نشده باشد  مقدار کد زیر null خواهد بود.

getSubscribedToken().then((token) => {  print("user token: ${token}") });

در نهایت پس از پیاده سازی کلاس Najva باید به صورت زیر باشد.

import 'package:najvaflutter/najvaflutter.dart';

class Najva extends NajvaFlutter {
 Najva() {
   init(CAMPAIGN_ID, WEBSITE_ID, API_KEY);
   initUserHandling();
 }

 @override
 void onUserSubscribed(String token) {
   print(token);
 }
}

استفاده همزمان نجوا با سایر سرویس‌های پوش نوتیفیکیشن

برای رفع کانفلیکت شما باید یک پلاگین جدید بسازید و تابع های مربوط به نجوا و دیگر سرویس های پوش را در آنجا فراخوانی کنید.

پس از ساخت پلاگین باید کتابخانه نجوا را به پلاگین اضافه کنید.

برای اضافه کردن کتابخانه نجوا تکه کد زیر را به فایل build.gradle ماژول اپلیکیشن برنامه خود اضافه کنید.

implementation 'com.najva.sdk:najva-android-sdk:1.1.5'

سپس در فایل AndroidManifest.xml تکه کد زیر را اضافه کنید.

<service
    android:name="com.najva.najvasdk.Service.NajvaMessagingService" 
    tools:node="remove" />

کد بالا باعث میشود تا سرویس نجوا از فایل مانیفیست برنامه شما حذف شود.

توجه کنید که به روش مشابه باید سرویس های مرتبط با دیگر سرویس های پوش را نیز حذف کنید.

سپس کد زیر را به فایل مانیفست اضافه کنید.

 
<service android:name=".MyFcmService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

توجه داشته باشید که تمامی تغییرات بالا باید در تگ اعمال شوند.

حال یک کلاس با نام MyFcmService بسازید.

public class MyFcmService extends FirebaseMessagingService {

}

کلاس FirebaseMessagingService دارای دو تابع با نام های onMessageReceived و onNewToken است.

شما میتوانید با پیاده سازی کردن این تابع ها در زمان دریافت پیام جدید یا تغییر کردن توکن کاربر کد دلخواه خودتان را بنویسید و همچنین میتوانید با صدا زدن تابع های کتابخانه نجوا اجازه دهدید تا نجوا نوتیفیکیشن های شما را ارسال کند.

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (NajvaPushNotificationHandler
.isNajvaMessage(getApplicationContext(), remoteMessage)){

NajvaPushNotificationHandler.handleMessage(
getApplicationContext(),
remoteMessage
);
}

}

@Override
public void onNewToken(String s) {
super.onNewToken(s);
NajvaPushNotificationHandler
.handleNewToken(getApplicationContext(), s);
}

همچنین در بخش های ذکر شده توابع مربوط به دیگر سرویس های پوش را صدا بزنید.