【问题标题】:FCM push with high priority to topic comes with delay对主题具有高优先级的 FCM 推送有延迟
【发布时间】:2016-11-14 13:50:40
【问题描述】:

我正在向订阅了一个主题的一小组设备(少于 5 台)发送推送消息,优先级参数设置为 high

高优先级。 FCM 尝试传递高优先级消息 立即,允许 FCM 服务唤醒睡眠设备 可能并打开到您的应用服务器的网络连接。应用程序 即时消息、聊天或语音呼叫警报,例如,通常 需要打开网络连接并确保 FCM 提供 立即向设备发送消息。仅当 消息是时间关键的,需要用户立即 互动,但请注意将您的消息设置为高优先级 与正常优先级相比,对电池消耗的贡献更大 消息。

但是当我将设备置于 IDLE 状态时,它会带来很大的延迟。在 Nougat 7.1 上延迟超过 10 分钟。这种类型的推送需要少于 10 秒的延迟。

time_to_live 设置为 0 只能解决 Marshmallow 上的问题。牛轧糖仍然失败。

所以,我只看到 3 个可能的问题原因

  1. 发送到主题的消息不能是高优先级。但是向每个设备发送独立的消息会增加应用服务器的负载。我需要从 Firebase 数据库加载新令牌,因此结果将是 - 5 个用户的 10 个 http 请求而不是 1 个。

  2. 应用程序必须在白名单中。但根据docs,如果我使用 FCM,这是不可接受的。而且我不想要它,因为它会导致电池耗尽。

  3. 错误? https://github.com/firebase/quickstart-android/issues/100

如果真正的原因是第一位的,那么为什么文档中没有描述呢?

【问题讨论】:

  • 您的delay_while_idle 是否设置为false
  • @AL delay_while_idle 根本没有设置,默认值为false。明天也将被弃用
  • 你弄明白了吗?高优先级主题消息也有限制吗?
  • @Kushan 我厌倦了这个并搬到了 OneSignal。它有设备到设备的推送,所以我不需要服务器。设备刚刚从 Firebase DB 获取所有必需的推送 ID 并向他们发送推送
  • @Pro 因为没人知道,除了来自 Google 的人,但看起来他们不在乎

标签: android firebase firebase-cloud-messaging android-7.0-nougat android-7.1-nougat


【解决方案1】:

通过将time_to_live 设置为 0 解决了问题。根据文档,此设置的优先级为“现在或永远”

指定消息生命周期的另一个优点是 FCM 从不限制 time_to_live (TTL) 值为 0 秒的消息。 换句话说,FCM 保证对必须发送的消息尽最大努力 “现在或永远”交付。请记住 time_to_live 值为 0 意味着无法立即传递的消息将被丢弃。 但是,由于此类消息永远不会被存储,这提供了 发送通知消息的最佳延迟时间。

UPD:仅针对 Marshmallow 解决。在牛轧糖上仍然是一个问题。

UPD2:只是不要使用主题,它们不是用来立即发送推送的。

【讨论】:

    【解决方案2】:

    根据Firebase Documentation

    主题消息针对吞吐量而非延迟进行了优化。为了快速、安全地交付给单个设备或小组设备,target messages to registration tokens,而不是主题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-07
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多