5分钟后收到应用关闭时来自Firebase的仅数据消息

时间:2018-05-17 19:58:59

标签: react-native firebase-cloud-messaging react-native-firebase

我试图在用户关闭应用时在我的Android托盘上显示数据消息,即当用户将应用拖到最近的应用列表中时。尽管如此,数据信息只是这样收到:

  1. 应用已关闭。已发送数据消息。
  2. 关闭应用时未收到消息。
  3. 应用程序已打开。
  4. 收到数据消息4~5分钟后​​,将显示在Android托盘中。
  5. 为实现这一目标,我使用 react-native-firebase lib,跟随docs

    import firebase from 'react-native-firebase';
    import type { RemoteMessage } from 'react-native-firebase';
    
    export default async (message: RemoteMessage) => {
    
        const notifPromise = new Promise((resolve, reject) => {
    
             let notification = new firebase.notifications.Notification();
                  notification.android.setPriority(firebase.notifications.Android.Priority.High);
                  notification.android.setChannelId("test-channel");
    
            resolve(firebase.notifications().displayNotification(notification));
        }); 
    
        console.log("MESSAGE IN BACKGROUND OR APP CLOSED");
    
        return notifPromise.resolve();
    }
    

    上面的代码在后台工作正常,我的意思是当应用程序只是"最小化"到二级计划。

    AndroidManifest.xml,HeadlessTask和MainApllication.java理论上与docs一致。我只是在Android托盘中显示空白UI以进行测试。

    邮递员发来的消息:

    {
    "to": "erVxmCT6rgA:APA91bGn6q9...",
    
    "data": {
        "custom1": "custom1",
        "custom2": "custom2"
       }
    }
    

    问题:一旦它在后台工作,会出现什么问题?为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

经过深入搜索,我能搞清楚。

我在华硕设备上运行应用程序。根据这个stackoverflow answer,华硕智能手机的性能技巧可以获得更长的电池续航时间,因此当您从最近的应用列表中移除应用时,您迫使应用停止。因此,负责接收消息的HeadlessJSTask取自android进程列表。

我还在代码中进行了一些编辑:

修复承诺:

export default async (message: RemoteMessage) => {

    const notification = new firebase.notifications.Notification();
              notification.android.setPriority(firebase.notifications.Android.Priority.High);
              notification.android.setChannelId("test-channel");
              notification.setTitle(message.data.custom1);

        firebase.notifications().displayNotification(notification);

    return Promise.resolve(message);
}

在我们的数据讯息中设置高优先级(背景和应用程序已关闭的消息是必需的):

{

"to": "cKUNOaOnvaY:APA91bFVAPLSuHogmZfxc1GlhqOhEkxcscoRvZxRrzno0XjyDkqYZVmNqJVL4v6mcQgH4p9zt9Zxz5aDugCjNy7CBg_pbXb8u8X6336K0x6WffdXoGOl50lCtHt46oS78Yyc9XM3gPJQ",

"data": {
    "custom1": "custom1",
    "custom2": "custom2"
},

"priority": "high"

}