【问题标题】:Is it possible for Android to retrieve FCM notification if the notification was sent when it was offline如果通知是在离线时发送的,Android 是否可以检索 FCM 通知
【发布时间】:2018-03-01 19:10:10
【问题描述】:

我正在使用 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",
        }
    }
}

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

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

有谁知道我是不是弄错了,还是我太看重FCM的功能了?

谢谢。

【问题讨论】:

  • 所以您希望在完全关闭的虚拟设备上收到一条消息?
  • 当我启动我的应用程序时,我希望在我离线时接收特定主题中发送的通知。
  • FCM 会将消息排队最多一定时间 (TTL) 并尝试重新传递,直到该持续时间到期。如果您看到不同的行为,您可能需要联系 Firebase 支持。 firebase.google.com/support/contact/troubleshooting
  • 好的,我会联系他们的。感谢大家的帮助

标签: android firebase firebase-cloud-messaging


【解决方案1】:

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

如果您需要尽快发送通知,您可以尝试调整优先级,看看在设备开启后是否会更快地发送通知。

【讨论】:

  • 您好,谢谢,优先级越高越好。我觉得我不耐烦了。
【解决方案2】:

你做得很好。

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

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

每当用户上网时,只需统计记录并使用 restful 服务获取丢失的记录。您可以使用各种参数来统计时间戳、令牌等记录。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2012-03-27
    • 2021-01-07
    • 1970-01-01
    相关资源
    最近更新 更多