【问题标题】:Firebase onMessageReceived() returns no getNotificationFirebase onMessageReceived() 不返回 getNotification
【发布时间】:2021-02-22 18:33:41
【问题描述】:

调用 remoteMessage.getNotification() 返回 null 并且 当调用remoteMessage.getData() 时,我得到一个奇怪的对象,它有一个初始属性_wp={,如下所示。我每次都需要提取 alert 属性,但我不确定如何。

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)

任何帮助将不胜感激。

【问题讨论】:

    标签: java android firebase wonderpush


    【解决方案1】:

    remoteMessage.getNotification() 返回null 是正常的,因为 WonderPush 只使用带有数据的 FCM 通知,而不是 Firebase 自己的格式。

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

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

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

    最好的,

    【讨论】:

    • 非常感谢您的回复@ofavre 我会检查尝试您的建议并回复您。
    猜你喜欢
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2021-12-13
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多