使用 app 在后台处理消息或将其杀死

当应用程序处于后台(终止进程)和前台(活动)时,Firebase 会以不同方式处理通知。

当你的应用程序在后台时,通知消息将显示在系统托盘中,并且不会调用 onMessageReceived。对于具有数据有效负载的通知消息,通知消息显示在系统托盘中,并且可以从用户点击通知时启动的意图中检索通知消息中包括的数据。 [ 1 ]

如果应用程序在后台,则服务将默认触发通知中的 titlebody,如上所述,onMessageReceived 方法将不会触发。相反,点击将从 Manifest.xml 打开 activity,标记为:

<intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

从这一点开始,你可以在这个活动中获得你的知识 6:

if (getIntent() != null && getIntent().getExtras() != null) {
      String customString = (String) getIntent().getExtras().get("myStringData");
      Integer customInteger = (Integer) getIntent().getExtras().get("myIntData");
}

在这种情况下,设置图标和图标背景颜色可以在 Manifest.xml [ 2 ] 内完成 :

<meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/your_drawable_icon" />

<meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/your_color" />

来源 1: FCM 后台处理

源码 2: FCM github 存储库