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

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

پیاده‌سازی

ترمینال یا cmd را باز کرده و دستورات زیر را در آن وارد کنید.

$ cd your/project/path/
$ cordova plugin add najva@latest

پس از آن در فایل index.js خود خط زیر را در تابع onDeviceReady اضافه کنید.

window.najva.init(successCallback,errorCallback,campaignId,websiteId,
apikey);

مقادیر CAMPAIGN_ID, WEBSITE_IDو API_KEY را با مقادیری که از پنل نجوا دریافت کرده اید جایگذاری کنید.

شما میتوانید مطابق شکل زیر در پنل اپلیکیشن خود در قسمت تنظیمات این مقادیر را دریافت کنید.

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

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

<config-file target="AndroidManifest.xml" parent="/manifest">
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" ></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
</config-file>

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

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

برای دریافت توکن کاربران و ارسال آن به سرور خودتان می‌توانید از کد زیر استفاده کنید.

window.najva.handleUsers(function (token) {
    //todo send token to your server.
}
);

تابع handleUsers یک تابع به عنوان ورودی دریافت می‌کند و هرگاه توکن برای کاربر شما ساخته شود و یا توکن کاربر تغییر کند این تابع فراخوانی خواهد شد. در کد فوق token مشخص کننده منحصر به فرد برای هر شخص است.

برای دسترسی لحظه ای به توکن کاربر می‌توانید از کد زیر استفاده کنید.


window.najva.getSubscribedToken(function (token) {
//todo send token to your server.
}
);

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

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

برای رفع کانفلیکت با دیگر سرویس های پوش نوتیفیکیشن وارد پوشه plugins شوید و سپس پوشه najva را باز کنید.

پس از آن فایل plugin.xml را باز کنید و به دنبال کد زیر بگردید.

<config-file target="AndroidManifest.xml" parent="/manifest/application">
            <service
                    android:name="com.najva.najvasdk.Service.NajvaMessagingService">
                <intent-filter>
                    <action android:name="com.google.firebase.MESSAGING_EVENT"></action>
                </intent-filter>
            </service>
        </config-file>

سپس کد فوق را با کد زیر جایگزین کنید.

<config-file target="AndroidManifest.xml" parent="/manifest/application">
<service
                    android:name="com.najva.cordovaplugin.MyService">
                <intent-filter>
                    <action android:name="com.google.firebase.MESSAGING_EVENT"></action>
                </intent-filter>
            </service>
    <service
                    android:name="com.najva.najvasdk.Service.NajvaMessagingService"
     tools:node="remove"></service>

</config-file>

کد زیر را داخل تگ اضافه کنید.

<source-file src="src/android/MyService.java"
                     target-dir="src/com/najva/cordovaplugin"></source-file>

سپس در مسیر src/android یک کلاس با نام MyService بسازید و کد زیر را در آن کپی کنید.

package com.najva.cordovaplugin;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.najva.najvasdk.Class.NajvaPushNotificationHandler;

public class MyService extends FirebaseMessagingService {

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

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

حال می‌توانید در تابع onMessageReceived کد دلخواه خود را بنویسید و سرویس های دیگر پوش نوتیفیکیشن را فراخوانی کنید.

با روش مشابه وارد فایل plugin.xml مربوط به دیگر پلاگین های پوش نوتیفیکیشن شوید و سرویس دارای intent filter زیر را حذف کنید

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

حال پروژه شما آماده است برای اجرا.