从 android 中的 FCM 获取自定义有效负载
Posted
技术标签:
【中文标题】从 android 中的 FCM 获取自定义有效负载【英文标题】:Get custom payload from FCM in android 【发布时间】:2016-11-14 06:47:24 【问题描述】:我必须从 FCM 推送通知中阅读下面提到的键。
"from_id": "",
"data":
"sender_id": "15",
"receiver_id": "42",
"sender_name": "Addy",
"alert": "Addy sent you a message.",
"notification_type": "message",
"message": "testing"
我正在使用
public void onMessageReceived(RemoteMessage remoteMessage)
String title=remoteMessage.getData().get("sender_name");
sendNotification(title, "");
问题是 title=remoteMessage.getData.get("sender_name"); returns null
,当我在浏览器中查看时,它显示数据存在于 sender_name
中。
【问题讨论】:
虽然我无法解决它,因为我开始使用 firebase,但我可以告诉你在哪里可以找到解决方案,因为它对我帮助很大。这里androidhive.info/2012/10/… @SameerKhan1406 我正在尝试这个 JSONObject json = new JSONObject(remoteMessage.getData().toString());字符串标题 = json.getString("sender_name");但我收到 JSONException。 “ sender_name 没有值”。但在 logcat 中,我可以看到针对 Data PayLoad: 标记的值。 获取 json 对象作为响应,而不是获取单个数据,然后使用 json.getString("sender_name");分享你的代码,我明天全程帮你好吗? 【参考方案1】:public void onMessageReceived(RemoteMessage remoteMessage)
Log.e(TAG, "From: " + remoteMessage.getFrom());
if (remoteMessage == null)
return;
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null)
Log.e(TAG, "Notification Body: " + remoteMessage.getNotification().getBody());
handleNotification(remoteMessage.getNotification().getBody());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0)
Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString());
try
JSONObject json = new JSONObject(remoteMessage.getData().toString());
handleDataMessage(json);
catch (Exception e)
Log.e(TAG, "Exception: " + e.getMessage());
【讨论】:
【参考方案2】:你可以试试这个
if (remoteMessage.getNotification() != null)
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
【讨论】:
以上是关于从 android 中的 FCM 获取自定义有效负载的主要内容,如果未能解决你的问题,请参考以下文章
Flutter iOS 和 Android 中的 FCM 自定义声音
在 Android 自定义操作系统中未收到 FCM 推送通知