我有一个关于同时接收通知和数据有效载荷的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/

10-10 17:10
查看更多