راه‌اندازی پلاگین React Native

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

تغییرات کد اندروید

تغییرات فایل gradle

در فایل gradle مربوط به پروژه در بخش allproject و بخش repositories کد زیر را به شکل زیر قرار دهید.

allprojects {
    repositories {
        google()
        jcenter()
    }
}

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

dependencies {
      implementation 'com.najva.sdk:najva-reactnative-plugin:1.+'
}

تغییرات کد جاوا

در فایل MainApplication.java فقط یک خط کد زیر را اضافه کنید:

@Override
    protected List<ReactPackage> getPackages() {
      @SuppressWarnings("UnnecessaryLocalVariable")
      List<ReactPackage> packages = new PackageList(this).getPackages();

      packages.add(new CustomPackage()); //only this line

      return packages;
    }

تغییرات کد جاوا اسکریپت

برای راه اندازی سرویس پوش نوتیفیکیشن نجوا شما باید قطعه کد زیر را در فایل App.js پروژه خود اضافه کنید:

import React, {Fragment,Component} from 'react';
import {NativeModules,DeviceEventEmitter} from 'react-native';
    var Najva = NativeModules.NajvaModule;

    export default class App extends Component {
    	constructor(props) {
	    	super(props);

	    	Najva.initializeNajva(YOUR_CAMPAIGN_ID,     
	    	                      YOUR_WEBSITE_ID,
	                              YOUR_API_KEY);
	    }
	}

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

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

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

برای دسته بندی و ارسال نوتیفیکیشن با توجه به موقعیت مکانی لازم است که دسترسی استفاده از موقعیت مکانی کاربر را در فایل AndroidManifest.xml پروژه خود اضافه کند.

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

 در نظر داشته باشید در ورژن اندروید ۶ به بالا باید دسترسی‌ها لوکیشن از کاربر توسط اپ درخواست شود. برای اطلاعات بیشتر به این آدرس در خواست دسترسی لوکیشن مراجعه کنید.

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

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

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

برای این کار کد زیر را در فایل App.js اضافه کنید.

import {DeviceEventEmitter} from 'react-native';

    export default class App extends Component {

        componentDidMount(){

	    	this.subscription =  DeviceEventEmitter.addListener('userHandler',
	    	function(token) {
		    	console.log("Token: " + token ); 

		      // handle token here
		    });
	    }	

    }

 توکن دریافت شده، شناسه کاربر شما در نجوا می‌باشد. که می‌توانید کاربر های خود را مدیریت کنید.

با استفاده از متد زیر می‌توانید توکن را بدون استفاده از Listener دریافت کنید. در نظر داشته باشید که اگر token از سرور‌های نجوا دریافت نشده باشد مقدار null توسط این متد برگشت داده می‌شود.

Najva.setUserHandler(new MyNajvaUserHandler()); 

که یک callback بصورت ورودی دریافت میکند.(برای نمونه)

 
Najva.getSubscribedToken(function(token){
		console.log(token)
		});
 

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

اگر نیاز دارید به صورت مستقیم از فایربیس در کنار نجوا نوتیفیکیشن‌ها را دریافت کنید یا از سرویس‌های پوش نوتیفیکیشنی که از فایربیس استفاده می‌کنند در کنار نجوا استفاده کنید مراحل زیر را در پروژه خود انجام دهید:

ابتدا در قسمت اندروید پروژه ی خود کلاس جدیدی به نام MyService ایجاد کنید. سرویس مورد نظر باید از کلاس FirebaseMessagingService ارث ببرد. در مرحله‌‌ی بعد کد‌های زیر را به کلاس MyService اضافه کنید:

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class Myservice extends FirebaseMessagingService {
   @Override
   public void onMessageReceived(RemoteMessage remoteMessage) {
       super.onMessageReceived(remoteMessage);
       if (NajvaPushNotificationHandler.isNajvaMessage(
                getApplicationContext(), remoteMessage))
        {
            NajvaPushNotificationHandler.handleMessage(
                getApplicationContext(), 
                remoteMessage
            );
      }
       // handel other push notifications
   }

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

حال می توانید در متد onMessageReceived سایر سرویس های پوش نوتیفیکیشن مورد استفاده در پروژه ی خود را فراخوانی کنید و با استفاده از متد زیر می‌تواند تشخیص دهید که آیا پیغام دریافتی مربوط به sdk نجواست است یا نه.

NajvaPushNotificationHandler.isNajvaMessage(Context, RemoteMessage)

در مرحله آخر باید کلاس MyService را به عنوان یک سرویس AndroidManifest.xml پروژه خود اضافه نمایید و سرویس NajvaMessagingService را غیر فعال نمایید. با کپی کردن و اضافه کردن مقادیر زیر در تگ application فایل AndroidManifest این کار انجام می‌شود. 

 
   <service android:name=".MyService">
       <intent-filter>
           <action android:name="com.google.firebase.MESSAGING_EVENT"/>
       </intent-filter>
   </service>
   <service
       android:name="com.najva.najvasdk.Service.NajvaMessagingService"
       tools:node="remove"/>