مثالهای پیادهسازی
این نمونهها نشان میدهند چگونه:
- توکن FCM را هنگام ایجاد یا تجدید به
AdTrace.setPushTokenپاس دهید - Silent push های Adtrace را در صورت ارسال notification های خودتان مدیریت کنید
- Firebase را قبل از Adtrace SDK مقداردهی اولیه کنید
اگر notification های push خودتان را ارسال نمیکنید، میتوانید از override کردن onMessageReceived صرفنظر کنید و فقط forwarding توکن (onNewToken / دریافت توکن) را پیادهسازی کنید.
هشدار
هنگام override کردن onMessageReceived، مدیریت notification های خودتان را خراب نکنید. notification های خود را در foreground پس از هر تغییر آزمایش کنید.
FirebaseMessagingService
AdTrace.setPushToken(token, context) را در onNewToken فراخوانی کنید (و در صورت نیاز هنگام دریافت توکن فعلی). برای payload های silent Adtrace میتوانید از Util.isAdTraceUninstallDetectionPayload، یا بررسی ساده title / body null توضیح داده شده در تنظیم استفاده کنید.
- Java
- Kotlin
import io.adtrace.sdk.AdTrace;
import io.adtrace.sdk.Util;
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import java.util.Map;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onCreate() {
super.onCreate();
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(task -> {
if (task.isSuccessful() && task.getResult() != null) {
AdTrace.setPushToken(task.getResult(), getApplicationContext());
}
});
}
@Override
public void onNewToken(String token) {
super.onNewToken(token);
AdTrace.setPushToken(token, getApplicationContext());
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (!remoteMessage.getData().isEmpty()) {
Map<String, String> payload = remoteMessage.getData();
if (Util.isAdTraceUninstallDetectionPayload(payload)) {
// بررسی silent uninstall Adtrace. نیازی به UI نیست.
} else {
// سایر payload های داده خود را اینجا مدیریت کنید
}
}
if (remoteMessage.getNotification() != null) {
// payload notification را اینجا مدیریت کنید
}
}
}
import io.adtrace.sdk.AdTrace
import io.adtrace.sdk.Util
import com.google.firebase.messaging.FirebaseMessaging
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onCreate() {
super.onCreate()
FirebaseMessaging.getInstance().token
.addOnCompleteListener { task ->
if (task.isSuccessful && task.result != null) {
AdTrace.setPushToken(task.result!!, applicationContext)
}
}
}
override fun onNewToken(token: String) {
super.onNewToken(token)
AdTrace.setPushToken(token, applicationContext)
}
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
if (remoteMessage.data.isNotEmpty()) {
val payload = remoteMessage.data
if (Util.isAdTraceUninstallDetectionPayload(payload)) {
// بررسی silent uninstall Adtrace. نیازی به UI نیست.
} else {
// سایر payload های داده خود را اینجا مدیریت کنید
}
}
remoteMessage.notification?.let {
// payload notification را اینجا مدیریت کنید
}
}
}
بررسی ساده silent push (بدون کمکتابع Util)
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (remoteMessage.getData().get("title") == null
&& remoteMessage.getData().get("body") == null) {
// Silent push
} else {
// مدیریت notification خودتان
}
}
مقداردهی اولیه Firebase قبل از Adtrace
Firebase را در کلاس Application قبل از AdTrace.onCreate() مقداردهی اولیه کنید.
- Java
- Kotlin
import android.app.Application;
import com.google.firebase.FirebaseApp;
import io.adtrace.sdk.AdTrace;
import io.adtrace.sdk.AdTraceConfig;
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseApp.initializeApp(this);
String appToken = "{YourAppToken}";
String environment = AdTraceConfig.ENVIRONMENT_SANDBOX;
AdTraceConfig config = new AdTraceConfig(this, appToken, environment);
AdTrace.onCreate(config);
}
}
import android.app.Application
import com.google.firebase.FirebaseApp
import io.adtrace.sdk.AdTrace
import io.adtrace.sdk.AdTraceConfig
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
FirebaseApp.initializeApp(this)
val appToken = "{YourAppToken}"
val environment = AdTraceConfig.ENVIRONMENT_SANDBOX
val config = AdTraceConfig(this, appToken, environment)
AdTrace.onCreate(config)
}
}
بعدی: آزمایش یکپارچهسازی