与其他推送服务配合使用
您可以同时使用AppMetrica Push SDK 和其他推送服务。 要完成这一步,你需要创建一个FCM或HMS服务,用于在集成的SDK之间转发消息。
使用其他 Firebase 推送服务
步骤 1. 在 AndroidManifest.xml 中进行修改
在 应用 元素中修改 AndroidManifest.xml 文件:
<service android:name=".FirebaseMessagingMainService"
android:enabled="true"
android:exported="false">
<intent-filter android:priority="100">
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name="io.appmetrica.analytics.push.provider.firebase.AppMetricaMessagingService" tools:node="remove"/>
步骤 2. 向项目添加依赖项
应用/build.gradle.kts
app/build.gradle
dependencies {
implementation("io.appmetrica.analytics:push-provider-firebase:$appmetrica_push_version")
}
dependencies {
implementation "io.appmetrica.analytics:push-provider-firebase:$appmetrica_push_version"
}
步骤 3. 添加推送通知处理
声明派生类 FirebaseMessagingMainService,基于基础类 FirebaseMessagingService,用于处理推送通知:
Kotlin
Java
class FirebaseMessagingMainService : FirebaseMessagingService() {
override fun onMessageReceived(message: RemoteMessage) {
super.onMessageReceived(message)
if (AppMetricaMessagingService.isNotificationRelatedToSDK(message)) {
AppMetricaMessagingService().processPush(this, message)
return
}
// Implement the logic for sending messages to other SDKs or handle own pushes.
}
}
public class FirebaseMessagingMainService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage message) {
super.onMessageReceived(message);
if (AppMetricaMessagingService.isNotificationRelatedToSDK(message)) {
new AppMetricaMessagingService().processPush(this, message);
return;
}
// Implement the logic for sending messages to other SDKs or handle own pushes.
}
}
第4步。 添加推送令牌处理
将处理 push token 的代码添加到 FirebaseMessagingMainService 类中:
Kotlin
Java
class FirebaseMessagingMainService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
super.onNewToken(token);
AppMetricaMessagingService().processToken(this, token)
// Implement the logic for sending tokens to other SDKs.
}
}
public class FirebaseMessagingMainService extends FirebaseMessagingService {
@Override
public void onNewToken(@NonNull String token) {
super.onNewToken(token);
new AppMetricaMessagingService().processToken(this, token);
// Implement the logic for sending tokens to other SDKs.
}
}
使用其他HMS推送服务
步骤 1. 在 AndroidManifest.xml 中进行修改
在 应用 元素中修改 AndroidManifest.xml 文件:
<service
android:name=".HmsMessagingMainService"
android:exported="true"
android:permission="${applicationId}.permission.PROCESS_PUSH_MSG">
<intent-filter android:priority="100">
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="io.appmetrica.analytics.push.provider.hms.AppMetricaHmsMessagingService" tools:node="remove"/>
步骤 2. 添加推送通知处理
从基础类 HmsMessageService 声明派生类 HmsMessagingMainService,用于处理推送通知:
Kotlin
Java
class HmsMessagingMainService : HmsMessageService() {
override fun onMessageReceived(message: RemoteMessage) {
super.onMessageReceived(message)
if (AppMetricaHmsMessagingService.isNotificationRelatedToSDK(message) {
AppMetricaHmsMessagingService().processPush(this, message)
return
}
// Implement the logic for sending messages to other SDKs or handle own pushes.
}
}
public class HmsMessagingMainService extends HmsMessageService {
@Override
public void onMessageReceived(RemoteMessage message) {
super.onMessageReceived(message);
if (AppMetricaHmsMessagingService.isNotificationRelatedToSDK(message) {
new AppMetricaHmsMessagingService().processPush(this, message);
return;
}
// Implement the logic for sending messages to other SDKs or handle own pushes.
}
}
步骤 3. 添加推送令牌处理
将 push token 处理添加到 HmsMessagingMainService 类代码中:
Kotlin
Java
class HmsMessagingMainService : HmsMessageService() {
override fun onNewToken(token: String?) {
super.onNewToken(token);
AppMetricaHmsMessagingService().processToken(this, token)
// Implement the logic for sending tokens to other SDKs.
}
}
public class HmsMessagingMainService extends HmsMessageService {
@Override
public void onNewToken(@Nullable String token) {
super.onNewToken(token);
new AppMetricaHmsMessagingService().processToken(this, token);
// Implement the logic for sending tokens to other SDKs.
}
}
另请参见
如果您没有找到所需答案,可以通过反馈表单提交您的问题。 请尽可能详细地描述问题。 如果可能,请附上截图。
这篇文章是否有用?
上一篇