java - 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)
任何帮助将不胜感激。
解决方案
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 正是为此目的而存在的:
- 这是解析通知
_wp.alert
字段的代码:https ://github.com/wonderpush/wonderpush-android-sdk/blob/v4.0.2/sdk/src/main/java/com/wonderpush/sdk/AlertModel.java - 这是构建通知的代码:https ://github.com/wonderpush/wonderpush-android-sdk/blob/v4.0.2/sdk/src/main/java/com/wonderpush/sdk/NotificationManager.java#L448 -L775
如果你有一个补充,那么分叉、破解、提交拉取请求并同时使用你的分叉会更有意义。
最好的,
推荐阅读
- c++ - c++ 项目中令人困惑的定义指令
- java - 休眠搜索将一个实体索引到两个不同的索引
- selenium - Selenium 未通过代理加载页面,显示构建信息:版本:'未知',修订:'未知',时间:'未知'
- c++ - 结构化绑定初始化程序表单 { assignment-expression } 在 clang 上的数组类型失败
- python - 如果 Pandas 数据框中的两个布尔值为真,如何替换元素
- webpack - 运行 webpack encore 时出现语法错误
- c# - 为什么我不能使用 SHA256 创建 jwt 令牌?
- github - 如何选择默认文件以在 github 存储库页面 URL 上打开?
- javascript - React Typescript:使用按钮添加另一行字段以形成
- c++ - 如何进行程序执行检查