FCM推送高优先级主题带来延迟

Dim*_*ira 8 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. 应用必须在白名单中.但是根据文档,如果我使用FCM,这是不可接受的.我不想要它,因为它会导致电池耗尽.

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

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

Dim*_*ira 4

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

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

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

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