我收到通知,标题和正文都显示,但没有收到数据。
{
"notification":{
"body":"This is message body",
"title":"This is Title",
"click_action":"clickAction",
"data":{
"post_id":"post id",
"update":"no"
}
},
"to":"token"
}
这是FCM的json,其他一切工作正常,我收到通知,通知打开一个特定页面,但是我无法从通知中获取数据。
这是MyFirebaseMessaging.java
private void showNotification(RemoteMessage.Notification notification,
Map<String, String> data) {
String clickAction = notification.getClickAction();
Intent intent = new Intent(clickAction);
if (data.size() > 0){
String post_id = data.get("post_id");
Bundle bundle = new Bundle();
bundle.putString("blog_post_id",post_id);
intent.putExtras(bundle);
} else {
String post_id = "post id";
Bundle bundle = new Bundle();
bundle.putString("blog_post_id",post_id);
intent.putExtras(bundle);
}
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivities(this, 0, new Intent[]{intent}, PendingIntent.FLAG_ONE_SHOT);
我也试过没有捆绑,但结果相同。 在clickAction活动中,我收到空值。 这是我在ClickAction类中用于接收Intent的代码
blog_post_id = getIntent().getStringExtra("blog_post_id");
Log.e(TAG,"blog_post_id "+blog_post_id);
编辑1:问题已解决,由于某些原因,clickAction活动正在从其他活动接收getIntent()并生成null。所以我又创建了一个getIntent()并添加了
String id = null;
try {
id = getIntent().getStringExtra("id");
blog_post_id = getIntent().getStringExtra("blog_post_id");
} catch (Exception e) {
e.printStackTrace();
}
try {
if (id.length() > 0) {
blog_post_id = id;
}
} catch (Exception e) {
e.printStackTrace();
}
这解决了我的问题。
答案 0 :(得分:0)
问题已解决,由于某些原因,clickAction活动正在从其他活动接收getIntent()
并生成空值。因此我又创建了一个getIntent()
并添加了。
所以我只是将它们合并,就解决了问题。
主要问题是-
Activity1
将数据发送到blog_post_id
Activity2
也希望将数据发送到blog_post_id
,
但是,由于blog_post_id
定期需要来自Activity1
的数据,如果它没有收到来自null pointer exception
的数据,则会生成Activity1
,
所以我只是将Activity2
的数据放入String id
并将它们合并。
String id = null;
try {
id = getIntent().getStringExtra("id");
blog_post_id = getIntent().getStringExtra("blog_post_id");
} catch (Exception e) {
e.printStackTrace();
}
try {
if (id.length() > 0) {
blog_post_id = id;
}
} catch (Exception e) {
e.printStackTrace();
}