دریافت، نمایش و کلیک Push با Android SDK
رفتار خودکار SDK برای دریافت و نمایش اعلان، Listener سفارشی و روش ادغام با FirebaseMessagingService موجود.
حالت عادی؛ بدون Service سفارشی
SDK سرویس Firebase خودش را از Manifest اضافه میکند و پیامهای Data پوشفا را در Foreground و Background دریافت و نمایش میدهد. عنوان، متن، تصویر، آیکن، دو دکمه، لینک، مسیر داخلی، Additional Data، Silent، Collapse ID و گزارش Delivery/Click پشتیبانی میشوند. برای استفاده معمولی FirebaseMessagingService جداگانه نسازید.
مشاهده یا مدیریت سفارشی پیام
Listener پیش از نمایش خودکار اجرا میشود. false یعنی SDK نمایش استاندارد را ادامه دهد؛ true یعنی اپ پیام را کاملاً مدیریت کرده است.
Pushfa.setNotificationListener { message ->
analytics.trackPush(message.id, message.additionalData)
// false: نمایش استاندارد SDK ادامه پیدا کند
false
}
// نمایش سفارشی و سپس Renderer استاندارد پوشفا
Pushfa.setNotificationListener { message ->
customLogic(message)
Pushfa.displayNotification(applicationContext, message)
true
}
اگر اپ از قبل FirebaseMessagingService دارد
Android نباید دو Service رقیب برای com.google.firebase.MESSAGING_EVENT داشته باشد. Service پوشفا را از Merged Manifest حذف و پیام/token را از Service خودتان به SDK تحویل دهید.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application>
<service
android:name="com.pushfa.sdk.PushfaFirebaseMessagingService"
tools:node="remove" />
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
تحویل پیام و token از Service اختصاصی
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
super.onNewToken(token)
Pushfa.handleNewToken(applicationContext, token)
}
override fun onMessageReceived(message: RemoteMessage) {
super.onMessageReceived(message)
val wasPushfaMessage = Pushfa.handleMessage(applicationContext, message)
if (!wasPushfaMessage) {
// پیام مربوط به سیستم دیگر را پردازش کنید.
}
}
}
لینک، Deep Link و مسیر داخلی
لینک کامل https یا Custom Scheme با ACTION_VIEW باز میشود. برای App Link و Scheme باید Intent Filter تعریف شده باشد. مسیر نسبی مانند /promotion در intent.data و Pushfa.EXTRA_TARGET_URL به Activity اصلی میرسد و باید در onCreate و onNewIntent خوانده شود.
private fun handlePushfaRoute(intent: Intent) {
val target = intent.getStringExtra(Pushfa.EXTRA_TARGET_URL)
?: intent.data?.toString()
val actionId = intent.getStringExtra(Pushfa.EXTRA_ACTION_ID)
val notificationId = intent.getStringExtra(Pushfa.EXTRA_NOTIFICATION_ID)
when (target) {
"/promotion" -> openPromotionScreen()
"/profile" -> openProfileScreen()
}
}
