我有一个关于同时接收通知和数据有效载荷的Firebase消息的问题。 documentation说,数据将“在意图之外”到达。
我的问题是哪个意图(或活动)?当将应用程序切换到后台时,将出现一个屏幕,用户可以在该屏幕上停止操作。因此,我是否需要尝试为我的应用程序中的所有Intent / Activity检索Extra?
一旦应用程序出现在前台,我实际在哪里以及如何编码以检索数据有效载荷?
谢谢!
添加:
我的意思是,我经常参加10项活动,应用完成后还会有更多活动。因此,我是否必须检索所有活动的Extra,以查看应用程序是否已使用任何Push数据有效负载重新打开?
最佳答案
您在问题中链接的文档中指出:
同时具有通知和数据有效载荷的消息,包括后台和
前景。在这种情况下,通知会传递到
设备的系统托盘,数据有效载荷在附件中提供
启动器活动的意图
使用清单LAUNCHER在清单中指定启动器活动。例如:
<activity
android:name="com.example.MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
您可以覆盖默认行为以指定另一个活动。在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>
并且为了澄清文档,当收到消息时,数据有效负载没有传递给活动。当用户单击通知时,它就会交付。
关于java - 如何在Android应用中处理/处理Firebase Cloud Messaging的数据有效负载(包括通知)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43963762/