首页 > 解决方案 > Firebase onMessageReceived() 不返回 getNotification

问题描述

调用remoteMessage.getNotification()返回null,调用时我得到一个奇怪的对象,它具有如下所列remoteMessage.getData()的初始属性。_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);
}

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

{_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)

任何帮助将不胜感激。

标签: javaandroidfirebasewonderpush

解决方案


remoteMessage.getNotification()作为 WonderPush返回的正常null情况仅使用 FCM 通知,其中包含数据,Firebase 自己的格式没有任何内容。

remoteMessage.getData()为您返回一个只能存储字符串值的地图。这对应于顶级 JSON 有效负载。此映射的字段是顶级 JSON 对象字段,其值都是字符串化的。因此,您必须_wp使用new JSONObject(remoteMessage.getData().get("_wp")). 您将基本上读取这个解析的JSON 对象的和字段以供title馈送和.text_wp.setContentTitle().setContentText()NotificationCompat.Builder

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

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

最好的,


推荐阅读