与其他推送服务配合使用

您可以同时使用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. 向项目添加依赖项

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,用于处理推送通知:

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 类中:

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,用于处理推送通知:

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 类代码中:

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.
    }
}

另请参见

如果您没有找到所需答案,可以通过反馈表单提交您的问题。 请尽可能详细地描述问题。 如果可能,请附上截图。

联系支持 为文档提出改进建议