当前位置: 首页 > 知识库问答 >
问题:

应用程序在后台时处理数据负载

董庆
2023-03-14

我正在尝试让我的应用程序处理数据负载,而它是在后台。

"data": {
        "aKey": "aValue",
        "customtitle": "my title",
        "custombody": "my body",
        "customimage": "my image"
    },
    "notification": {
        "title": "my title",
        "text": "some text",
        "icon": "icon to use",
        "sound": "soundtouse"
    }

根据“在后台应用程序中处理通知消息”一节下的文档

..数据有效载荷将在发射器活动意图的附加部分中交付。

共有1个答案

曾云
2023-03-14

您只遇到了FCM的预期行为。在您链接的文档中,该表显示,当使用data有效负载时,只有当消息有效负载只有数据时,它才会触发OnMessageReceived():

"data": {
        "aKey": "aValue",
        "customtitle": "my title",
        "custombody": "my body",
        "customimage": "my image"
    }

但是您在消息负载中同时使用了通知数据。这意味着当应用程序处于后台时,有效负载将由Android系统本身处理,在通知托盘中显示通知详细信息。

然后,当用户点击Android处理的通知时,它应该打开您的应用程序(通常是MainActivity或您通过使用click_action设置打开的任何活动),然后您应该处理如下所示的意图:

    Intent intent = getIntent();
    String pos = getIntent().getStringExtra("<YOUR KEY HERE>");
    if(pos !=null){
        selectDrawerItem(navigationView.getMenu().getItem(Integer.parseInt(pos)));
    }
 类似资料: