应用程序完全关闭后无法从FCM获取推送通知

时间:2016-09-30 20:20:57

标签: android push-notification android-webview android-manifest firebase-cloud-messaging

应用可以有三种状态:  的 1。前景。  2.背景(最小化)  3.完全关闭(从活动应用程序列表中删除)

这就是我做的方式:  1. 前景/背景 - >     onMessageReceived(RemoteMessage remoteMessage)是我获取我进一步解析的所有消息的地方。

  1. 完全关闭 - > Intent processInputIntent = getIntent(); int id = processInputIntent.get(“id”); //我以这种方式获取所有参数 如果我不在清单中执行以下更改,则此方法有效。
  2. 问题是我的应用程序是一个完整的webview,我需要保存应用程序的状态,所以我使用             的机器人:alwaysRetainTaskState = “真”             机器人:launchMode = “singleTask” >

    这是处理事情的正确方法吗?任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

所以评论。我推断出在添加 android:alwaysRetainTaskState =" true" 之后你没有在活动中获得意图数据的原因是因为系统正在保留任务并且系统没有创建新任务现在新根活动。但根据FCM Docs

  

当您的应用在后台时,Android会指示通知   消息到系统托盘。用户点击通知即可打开   应用程序启动器默认情况下。

     

这包括同时包含通知和数据有效负载的消息   (以及从Notifications控制台发送的所有消息)。在这些   例如,通知被传送到设备的系统托盘,和   数据有效负载以的意图附加内容提供   启动器活动

所以,我认为这个问题的解决方案是在onMessageReceived()中获得 DATA PAYLOAD ONLY 以下是有关此方法的非常重要的信息。

onMessageReceived()方法不会被称为如果应用程序处于后台或被杀,并且发送的消息包含DATA和NOTIFICATION有效负载

当应用未运行时,您仍会收到通知。但是如果你想通过onMessageReceived()拦截数据,那么你将不得不创建一个自定义应用服务器,它将仅发送DATA有效载荷到fcm端点。

类似的东西:

 {
   "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
   "data" : {
     "Title" : "Title for Notification",
     "body" : "Notification body can go here",
     "Room" : "Something extra"
   },
 }

让我知道它是否会改变你的任何内容。