如何识别 FCM 消息是针对 FCM 客户端处理程序还是 UrbanAirship 处理程序

How to identify if a FCM message is targeted to the FCM client handler or UrbanAirship handler

我在 Android 上使用 UrbanAirship 作为我的移动参与工具,与 FCM 并行。基于 UrbanAirship documentation,如果使用我自己的 FirebaseMessagingService,我需要使用 AirshipFirebaseMessagingService.processMessageSync(this, remoteMessage);

传递远程消息

我怎么知道消息不是由 UrbanAirship 处理的并且我回退到我自己的 FCM 通知生成器? processMessageSync 方法没有 return 值。我注意到,因为 UrbanAirship 以同步方式处理消息,所以它们正在消耗和取消 remoteMessage 对象的 notification 字段。我觉得很奇怪,他们没有公开任何 属性 或 return 值。

这是对我有用的代码(我的 AppFirebaseMessageService.java 的一部分)

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);

    AirshipFirebaseMessagingService.processMessageSync(this, remoteMessage);

    if (remoteMessage != null && remoteMessage.getNotification() != null) {
        handleInternalFcm(remoteMessage);
    }
}

我得到了 UrbanAirship 支持的回复。这是判断一条消息是否可以被 UA 处理的官方方式:

PushMessage pushMessage = new PushMessage(message.getData());
if (pushMessage.containsAirshipKeys()) {
    //will be handled by UrbanAirship
}