Использование с другими push-сервисами

AppMetrica Push SDK можно использовать одновременно с другими push-сервисами. Для этого необходимо создать свой push-сервис для FCM или HMS, который будет перенаправлять сообщения между интегрированными SDK.

Использование с другими Firebase push-сервисами

Шаг 1. Внесите изменения в AndroidManifest.xml

Внесите изменения в элемент application файла 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. Добавьте обработку push-уведомлений

Объявите производный класс FirebaseMessagingMainService от базового FirebaseMessagingService для обработки push-уведомлений:

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-токенов

Дополните код класса FirebaseMessagingMainService для обработки push-токенов:

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 push-сервисами

Шаг 1. Внесите изменения в AndroidManifest.xml

Внесите изменения в элемент application файла 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. Добавьте обработку push-уведомлений

Объявите производный класс HmsMessagingMainService от базового HmsMessageService для обработки push-уведомлений:

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-токенов

Дополните код класса HmsMessagingMainService для обработки push-токенов:

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

См. также

Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.

Написать в службу поддержки