FCM高优先级主题推送延迟

时间:2016-11-14 13:50:40

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

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

  

高优先级。 FCM尝试传递高优先级消息   立即,允许FCM服务唤醒睡眠设备   可能并打开与您的应用服务器的网络连接。应用程序   例如,通常的即时消息,聊天或语音呼叫警报   需要打开网络连接并确保FCM提供   消息延迟到设备。只有在设置时才设置高优先级   消息是时间关键的,需要用户立即   交互,但要注意将邮件设置为高优先级   与普通优先级相比,电池消耗更多   消息。

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

time_to_live设置为0仅在Marshmallow上解决问题。牛轧糖仍然失败。

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

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

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

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

  4. 如果真正的原因是第一个,那么为什么它没有在文档中描述?

2 个答案:

答案 0 :(得分:0)

问题通过将time_to_live设置为0来解决。根据文档,此设置优先于"现在或从不"

  

指定消息生命周期的另一个好处是FCM   永远不会限制time_to_live(TTL)值为0秒的消息。   换句话说,FCM保证必须为消息尽最大努力   交付"现在或从未。"请记住,time_to_live值为0   表示不能立即传递的消息被丢弃。   但是,因为这些消息永远不会被存储,所以这提供了   发送通知消息的最佳延迟。

UPD:仅针对棉花糖解决。关于Nougat仍然是一个问题。

UPD2:只是不使用主题,它们不会毫不拖延地发送推送。

答案 1 :(得分:0)

根据Firebase Documentation

优化了主题消息的吞吐量,而不是延迟。为了快速,安全地传送到单个设备或小型设备组,target messages to registration tokens,而不是主题。