Firebase onMessageReceived() returns 没有 getNotification

Firebase onMessageReceived() returns no getNotification

调用 remoteMessage.getNotification() returns null 和 当调用 remoteMessage.getData() 时,我得到一个奇怪的 object 返回,它有一个初始的 属性 _wp={ 如下所列。我每次都需要提取警报 属性,但我不确定如何提取。

public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    
    RemoteMessage.Notification notification = remoteMessage.getNotification();
    Map<String, String> data = remoteMessage.getData();

    Log.d("DATA", remoteMessage.getData().toString());
    sendNotification(data);
}

远程数据日志returns如下。所以我似乎无法获得构建通知所需的标题和文本。

{_wp={"c":"01euntvtna3epk83","alert":{"text":"Body text","title":"test"},"receipt":false,"type":"simple","targetUrl":"wonderpush:\/\/notificationOpen\/default","n":"01eunu08bjla8303","reporting":{"campaignId":"01euntvtna3epk83","notificationId":"01eunu08bjla8303"},"receiptUsingMeasurements":true}, alert=Body text}

我基本上想在使用 NotificationCompat.Builder

时使用它们
.setContentTitle(title)
.setContentText(text)

任何帮助将不胜感激。

正常remoteMessage.getNotification() returns null 因为WonderPush只使用FCM通知里面的数据,没有Firebase自己的格式。

remoteMessage.getData() returns 你的地图只能存储字符串值。这对应于顶级 JSON 负载。该地图的字段是顶级 JSON 对象字段,其值均已字符串化。 所以你必须使用 new JSONObject(remoteMessage.getData().get("_wp")) 来解析 _wp 键。 您基本上会阅读这个已解析的 _wp JSON 对象的 titletext 字段,以提供 [=20] 的 .setContentTitle().setContentText() =].

但您应该注意,WonderPush Android SDK 正是为此目的而存在的:

如果你有一个补充,分叉、破解、提交拉取请求并同时使用你的分叉会更有意义。

最佳,