如果通知在脱机时发送,Android是否可以检索FCM通知

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果通知在脱机时发送,Android是否可以检索FCM通知相关的知识,希望对你有一定的参考价值。

我正在使用firebase云消息,我想知道是否可以向离线设备发送通知,然后在它上线后接收它。

客户端

我通过主题向虚拟设备发送通知(Nexus 5 API 27)我使用以下依赖项:

compile 'com.google.firebase:firebase-auth:11.8.0'
compile 'com.google.firebase:firebase-core:11.8.0'
compile 'com.google.firebase:firebase-database:11.8.0'
compile 'com.google.firebase:firebase-messaging:11.8.0'

服务器端

我有一个发送POST请求的Java服务器:

网址:https://fcm.googleapis.com/v1/projects/PROJECT_ID/messages:send

Authorization : Bearer <token OAuth2>
Content-Type : application/json

身体

{
    "message": {
        "topic":"topicName",
        "data": {
            "infoKey": "infoValue",
        }
    }
}

启动虚拟机后,我会快速收到通知。但是,如果我的虚拟设备关闭且我的服务器发送通知,则即使等待超过10毫秒,客户端也不会收到通知。这是正常的吗?我觉得我做错了什么,因为当我阅读文档时,通知应该存储,直到有人读取它为止:

https://firebase.google.com/docs/cloud-messaging/concept-options#ttl

有谁知道我犯了错误,或者我是否对FCM的功能过分了解?

谢谢。

答案

这应该是正确的行为。当设备离线或打瞌睡时,它会在感觉需要或设备唤醒时立即发送。 https://firebase.google.com/docs/cloud-messaging/concept-options#lifetime

您可以尝试使用优先级,以便在设备开启后更快地发送通知,如果您需要尽快发送。

另一答案

你很好。

但是现在谷歌不会在用户的基础上提供任何历史记录功能。

我可以建议一个简单的方法来解决这个问题。您可以记录您在服务器端发送给用户的通知。在用户端,每当收到通知时,保持另一条记录。

每当用户上线时,只记录两个记录并使用restful service获取丢失的记录。您可以使用各种参数来记录时间戳,令牌等记录。

希望这可以帮助。

以上是关于如果通知在脱机时发送,Android是否可以检索FCM通知的主要内容,如果未能解决你的问题,请参考以下文章

推送通知是否在设置中被禁用后传递到Android手机?

是否可以在不构建任何应用程序的情况下向 Android 发送推送通知?

为没有 Cordova 插件的 Android PWA 发送本地推送通知

推送天蓝色通知中心的通知

如果应用程序在前台,则向状态栏发送通知

通过 Firebase 从 Laravel 服务器向 Android 应用发送推送通知