在我的应用中,有不同的类别,主页面(MainActivity),评论活动和聊天活动等。 当我收到来自评论,聊天或主页的通知时,它仍会打开主要活动。我想要的是,如果我收到关于聊天的通知,它应该打开聊天活动,如果有关于评论,它应该打开评论活动等等... 请帮助谢谢。
答案 0 :(得分:1)
在message notification data中,使用操作字符串的值添加属性click_action
。对于要启动的活动,请更新清单以定义与操作匹配的意图过滤器。
例如,带有消息:
{
"to": "dhVgCGVkTSR:APA91b...mWsm3t3tl814l",
"notification": {
"title": "New FCM Message",
"body": "Hello World!",
"click_action": "com.example.FCM_NOTIFICATION"
},
"data": {
"score": "123"
}
}
像这样定义意图过滤器:
<activity android:name=".MyFcmNotificationActivity">
<intent-filter>
<action android:name="com.example.FCM_NOTIFICATION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 1 :(得分:0)
在您的MainActivity onCreate()中,您需要获取启动活动的意图并从通知中重新收回数据。
Bundle bundle = getIntent().getExtras();
if (bundle != null && bundle.get("data")!=null) {
//here can get notification message
String datas = bundle.get("data").toString();
}
从此处,您可以根据从通知中收到的数据重定向用户。 https://firebase.google.com/docs/cloud-messaging/android/receive#backgrounded
处理后台应用程序中的通知消息
当您的应用在后台时,Android会指示通知 消息到系统托盘。用户点击通知即可打开 应用程序启动器默认情况下。
这包括同时包含通知和数据有效负载的消息 (以及从Notifications控制台发送的所有消息)。在这些 例如,通知被传送到设备的系统托盘,和 数据有效负载是在您的意图的附加内容中提供的 发射器活动。
答案 2 :(得分:0)
您的问题的答案是PendingIntent
。您需要向FCM有效负载发送通知类型(聊天,评论等),然后在onMessageReceived()
处理通知,知道类型并使用所需活动创建PendingIntent。当用户点击通知时,android将启动PendingIntent中指定的活动。请参阅此android documentation。我希望这会有所帮助。
[更新]我更喜欢Bob's answer,但我自己从未尝试过