我将推送消息发送到订阅一个主题的小组设备(少于5个),优先级参数设置为 high
高优先级 . FCM尝试立即传递高优先级消息,允许FCM服务在可能的情况下唤醒休眠设备并打开与应用服务器的网络连接 . 例如,具有即时消息,聊天或语音呼叫警报的应用程序通常需要打开网络连接并确保FCM毫不拖延地将消息传递给设备 . 仅当消息对时间至关重要且需要用户立即进行交互时才设置高优先级,但要注意,将消息设置为高优先级会导致电池消耗超过普通优先级消息 .
但是,当我将设备置于IDLE状态时,它会带来很大的延迟 . 在Nougat 7.1延迟超过10分钟 . 这种类型的推动需要不到10秒的延迟 .
将 time_to_live
设置为0仅在Marshmallow上解决问题 . 牛轧糖仍然失败 .
所以,我只看到3个可能的问题原因
-
发送给主题的消息不能是高优先级 . 但是向每个设备发送独立消息会增加应用服务器负载 . 我需要从Firebase数据库加载新的令牌,因此结果将是 - 对5个用户而不是1个用户的10个http请求 .
-
应用必须在白名单中 . 但根据docs它's not acceptable, if I' m使用FCM . 我不想要它,因为它会导致电池耗尽 .
-
错误? https://github.com/firebase/quickstart-android/issues/100
如果真正的原因是第一个,那么为什么它没有在文档中描述?
1 回答
通过将
time_to_live
设置为0来解决问题 . 根据文档,此设置的优先级为"now or never"UPD:仅针对棉花糖解决 . 在牛轧糖仍然是一个问题 .
UPD2:只是不使用主题,它们不是为了毫不拖延地发送推送 .