为了账号安全,请及时绑定邮箱和手机立即绑定

在后台应用程序时未调用消息的FireBase

在后台应用程序时未调用消息的FireBase

皈依舞 2019-07-02 16:35:25
在后台应用程序时未调用消息的FireBase我正在使用Firebase并测试从我的服务器发送通知到我的应用程序,而应用程序在后台。通知发送成功,甚至出现在设备的通知中心,但当通知出现时或即使我单击它,也不会调用FCMessagingService中的onMessageReciser方法。在我的应用程序处于前台的时候,当我测试这个程序时,onMessageReciser方法就被调用了,一切都很好。当应用程序在后台运行时,问题就会发生。这是我想要的行为,还是有办法解决这个问题?这是我的FBMessagingService:import android.util.Log;import com.google.firebase.messaging.FirebaseMessagingService;import com.google.firebase.messaging.RemoteMessage; public class FBMessagingService extends FirebaseMessagingService {     @Override     public void onMessageReceived(RemoteMessage remoteMessage) {         Log.i("PVL", "MESSAGE RECEIVED!!");         if (remoteMessage.getNotification().getBody() != null) {             Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getNotification().getBody());         } else {             Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getData().get("message"));         }     }}
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

这是按预期工作的,只有在应用程序处于前台时,通知消息才会传递给onMessageReceired回调。如果您的应用程序处于后台或关闭状态,则通知中心将显示一条通知消息,并且任何来自该消息的数据被传递给意图。它是由于用户点击通知而启动的。

您可以指定一个Click_action来指示当用户点击通知时应该启动的意图。如果未指定Click_action,则使用主活动。

启动意图时,可以使用

getIntent().getExtras();

若要检索包含与通知消息一起发送的任何数据的集合,请执行以下操作。

有关通知消息的更多信息,请参见博士.


查看完整回答
反对 回复 2019-07-02
?
慕仙森

TA贡献1827条经验 获得超8个赞

移除notification场域完全来自你的服务器请求。送data把它处理好onMessageReceived()否则你的onMessageReceived()将不会触发时,应用程序是在后台或死亡。

别忘了包括"priority": "high"字段在通知请求中。根据文档:数据消息是以正常优先级发送的,因此它们不会立即到达;这也可能是问题所在。

以下是我从服务器发送的内容

{
  "data":{
    "id": 1,
    "missedRequests": 5
    "addAnyDataHere": 123
  },
  "to": "fhiT7evmZk8:APA91bFJq7Tkly4BtLRXdYvqHno2vHCRkzpJT8QZy0TlIGs......",
  "priority": "high"}

这样,您就可以在onMessageReceived(RemoteMessage message)就像这样.让我去拿身份证

Object obj = message.getData().get("id");
        if (obj != null) {
            int id = Integer.valueOf(obj.toString());
        }


查看完整回答
反对 回复 2019-07-02
?
GCT1015

TA贡献1827条经验 获得超4个赞

此方法handleIntent()已经折旧,因此处理通知可以如下所示:

  1. 前台状态:单击通知将转到挂起的意图的活动,在创建通知时,您将以语法的方式提供该活动,因为它通常是用通知的数据有效负载创建的。

  2. 背景/死亡状态-在这里,系统本身根据通知有效负载创建一个通知,单击该通知将带您到应用程序的启动活动,在该活动中,您可以在任何生命周期方法中轻松地获取意图数据。


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 575 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信