如何识别 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
}
我在 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
}