如何创建始终在后台处于活动状态的服务FirebaseMessagingService

时间:2018-08-20 04:49:58

标签: android firebase firebase-cloud-messaging

您好,如果您有<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="inpost"> <a href="">Link1</a> <div class=""> <a href="">Link2</a> <div class=""> <a href="">Link3 </a> </div> </div> <a href="">Link4</a> <a href="">Link5</a> <a href="">Link6</a> <a href="">Link7</a> [Size = M, L] <a href="">Link8</a> <a name="more"></a> something<br> <a href="">link9, do not match</a> something<br> something<br>something<br> </div>,您好吗,我可以如何创建FirebaseMessagingService在后​​台始终处于活动状态,然后为唤醒服务和睡眠应用添加5分钟的时间

谢谢

我的代码

push notification

然后

  

实现'com.google.firebase:firebase-messaging:17.1.0'

1 个答案:

答案 0 :(得分:0)

当应用程序在后台时,不会调用

onMessageReceived()。我几个月前有这个问题。我通过重写handlerIntent方法解决它。但是您应该将Firebase消息库降级为实现'com.google.firebase:firebase-messaging:10.2.1'

之后:

@Override
    public void handleIntent(Intent intent) {
        try
        {
            if (intent.getExtras() != null)
            {
                RemoteMessage.Builder builder = new RemoteMessage.Builder("MessagingService");

                for (String key : intent.getExtras().keySet())
                {
                    builder.addData(key, intent.getExtras().get(key).toString());
                }

                onMessageReceived(builder.build());
            }
            else
            {
                super.handleIntent(intent);
            }
        }
        catch (Exception e)
        {
            super.handleIntent(intent);
        }
    }

如果您不想降级您的磁带库,那么

您可以指定click_action来指示在用户点击通知时应启动的意图。如果未指定click_action,则使用main活动。

启动意图后,您可以使用

getIntent().getExtras();

检索包含与通知消息一起发送的所有数据的Set。

有关通知消息的更多信息,请参见https://firebase.google.com/docs/cloud-messaging/android/receive#sample-receive