我收到通知,标题和正文,但没有收到数据。
{
"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 类中用于接收 Intent 的代码
blog_post_id = getIntent().getStringExtra("blog_post_id");
Log.e(TAG,"blog_post_id "+blog_post_id);
编辑 1:问题已解决,由于某种原因,单击操作活动正在从其他活动接收 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();
}
这解决了我的问题。
问题已解决,由于某种原因,单击操作活动正在接收来自其他活动的getIntent()
并生成 null。 所以我又创建了一个getIntent()
并添加了。 所以我简单地合并了它们,它解决了这个问题。
主要问题是——
Activity1
将数据发送到blog_post_id
Activity2
还想向blog_post_id
发送数据,
但是因为blog_post_id
需要定期从Activity1
那里获得数据,所以如果没有从Activity1
接收数据,它会生成null pointer exception
, 因此,我只需将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();
}