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

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

پیاده‌سازی

ابتدا فایل najva_b4a.zip را دانلود کرده و najva.jar و najva.xml را در پوشه libraries کپی کنید.

سپس محتویات پوشه dependencies را در پوشه libraries کپی کنید.

  • اگر نمیدانید پوشه libraries کجاست در IDE مربوط به B4A تب Libraries Manager را باز کرده و کلیک راست کنید. سپس گزینه‌ی Open internal libraries folder را انتخاب کنید.
  • همچنین می‌توانید از منوی tools->Configure Path می‌توانید برای Additinal libraries path یک مسیر تعیین کنید و از آن استفاده کنید.

سپس در بخش Libraries manager گزینه najva را پیدا کرده و تیک آن‌را بزنید.

پس از آن در بخش Activity_create کد زیر را قرار دهید.

Dim najva as NajvaB4aPlugin
najva.initialize(CampaignId,WebsiteId,ApiKey);

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

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

پس از آن منوی Project->Manifest Editor را باز کرده و کد زیر را در آن کپی کنید.

درصورتی که از ورژن ۸ و یا بالاتر b4a استفاده می‌کنید کد زیر را کپی کنید.

CreateResourceFromFile(Macro,Najva.NajvaV8)

در صورتی که از ورژن کمتر از ۸ استفاده می‌کنید کد زیر را کپی کنید.

'************ Firebase Base ************
'CreateResourceFromFile("google-services", "google-services.json")
AddPermission(android.permission.ACCESS_NETWORK_STATE)
AddPermission(android.permission.INTERNET)
AddPermission(android.permission.WAKE_LOCK)
AddPermission(com.google.android.c2dm.permission.RECEIVE)
AddPermission(${applicationId}.permission.C2D_MESSAGE)
AddPermission(com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE)
AddManifestText( <permission android:name="${applicationId}.permission.C2D_MESSAGE"
  android:protectionLevel="signature" ></permission>)
AddApplicationText(
 <receiver
            android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
            android:enabled="true"
            android:exported="false" >
        </receiver>

  <service
            android:name="com.google.android.gms.measurement.AppMeasurementService"
            android:enabled="true"
            android:exported="false" ></service>

 <receiver
            android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.INSTALL_PACKAGES" >
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" ></action>
            </intent-filter>
</receiver>
<service
            android:name="com.google.android.gms.measurement.AppMeasurementJobSer
vice"
            android:enabled="true"
            android:exported="false"
            android:permission="android.permission.BIND_JOB_SERVICE" ></service>

 <service android:name="com.google.firebase.components.ComponentDiscoveryService" >
            <meta-data
                android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
                android:value="com.google.firebase.components.ComponentRegistrar" />
            <meta-data
                android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
                android:value="com.google.firebase.components.ComponentRegistrar" />
             <meta-data
                android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
                android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
   <provider
  android:authorities="${applicationId}.firebaseinitprovider"
  android:name="com.google.firebase.provider.FirebaseInitProvider"
  android:exported="false"
  android:initOrder="100" ></provider>

   <receiver
  android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
  android:exported="true"
  android:permission="com.google.android.c2dm.permission.SEND" >
  <intent-filter>
  <action android:name="com.google.android.c2dm.intent.RECEIVE" ></action>
  <action android:name="com.google.android.c2dm.intent.REGISTRATION" ></action>
  <category android:name="${applicationId}" ></category>
  </intent-filter>
  </receiver>
    <receiver
  android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
  android:exported="false" ></receiver>

  <service
  android:name="com.google.firebase.iid.FirebaseInstanceIdService"
  android:exported="true">
  <intent-filter android:priority="-500">
  <action android:name="com.google.firebase.INSTANCE_ID_EVENT" ></action>
  </intent-filter>
  </service>
)

'************ Firebase Base (end) ************

AddApplicationText(
	<service
	    android:name="com.najva.najvasdk.service.NajvaMessagingService">
	    <intent-filter android:priority="100">
		<action android:name="com.google.firebase.MESSAGING_EVENT"></action>
	    </intent-filter>
	</service>

	<service
android:name="com.najva.najvasdk.service.NajvaMessagingService"></service>

	<meta-data
	    android:name="com.google.firebase.messaging.default_notification_channel_id"
	    android:value="@string/default_notification_channel_id" />

	<receiver android:name="com.najva.najvasdk.receiver.NetworkReceiver">
	    <intent-filter>
		<action android:name="android.net.conn.CONNECTIVITY_CHANGE" ></action>
	    </intent-filter>
	</receiver>

	<receiver android:name="com.najva.najvasdk.receiver.InstallPackageReceiver">
	    <intent-filter>
		<action android:name="android.intent.action.PACKAGE_INSTALL" ></action>
		<action android:name="android.intent.action.PACKAGE_ADDED" ></action>
		<data android:scheme="package"></data>
	    </intent-filter>
	</receiver>

	<receiver android:name="com.najva.najvasdk.receiver.UninstallPackageReceiver">
	    <intent-filter>
		<action android:name="android.intent.action.PACKAGE_REMOVED"></action>
		<data android:scheme="package"></data>
	    </intent-filter>
	</receiver>

	<receiver android:name="com.najva.najvasdk.receiver.ChangeSimcardReceiver">
	    <intent-filter>
		<action android:name="android.intent.action.SIM_STATE_CHANGED"></action>
	    </intent-filter>
	</receiver>
)

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

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

برای هندل کاربران خود تکه کد زیر را در کد main خود قرار دهید.

Sub najvaevent_usersubscribed (token as String)
End Sub

که در آن token یک رشته است که آی دی مختص هر کاربر را شامل می شود.

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

najva.getSubscribedToken()

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