FCM优先级与交付时间需要澄清

3
我目前正在使用传统的http API向连接到特定主题的Android设备发送数据消息。我有时间关键和不那么关键的消息。然而,我从未有需要唤醒附加手机的消息。
因此,我从priority=normal开始,因为我期望这里解释的行为:

https://firebase.google.com/docs/cloud-messaging/concept-options enter image description here

但实际上我观察到的更像是这里所描述的:

https://firebase.google.com/docs/cloud-messaging/http-server-ref enter image description here

当我将优先级设置为priority=high时,消息确实像即时消息一样到达。
所以第一部分Firebase文档似乎是错误的?还是我需要如何继续才能实现那里描述的行为,因为这正是我在我的用例中所需要的?
顺便说一下,在这种情况下,我使用time_to_live=0消息。消息很小,少于50字节的数据。
1个回答

1

你需要像这样使用priority=high:

const options = {
priority: "high",
timeToLive: 60 * 60 * 24
};

如果您希望设备在后台或关闭时立即收到通知,则需要使用priority: "high",因为这意味着发送的通知具有更高的优先级,从而立即出现并唤醒设备。
FCM尝试立即传递高优先级消息,允许FCM服务在必要时唤醒休眠设备并运行一些有限的处理(包括非常有限的网络访问)。高优先级消息通常应该导致用户与您的应用程序交互。如果FCM检测到它们不会产生这种交互的模式,则您的消息可能会被降低优先级。
timetolive:
此参数指定如果设备离线,消息在FCM存储中应保留多长时间(以秒为单位)。支持的最长存活时间为4周,默认值为4周。有关更多信息,请参见

但是我真正需要的是:立即交付给正在运行的应用程序,否则我想避免唤醒设备。 - InI4
你可以使用通知消息来代替数据消息。 - Peter Haddad
很抱歉,我不明白你的回复与我的问题有什么关联。当然,这并不意味着你的回复对其他人不感兴趣,但它并不是一个答案,对吧? - InI4
我之前解释了优先级,因为你在问题中提到有些困惑,然后在评论中又说希望在运行时看到它,所以我建议使用通知消息。 - Peter Haddad
我引用了两篇文档(其中一篇是你再次引用的),它们告诉我不同的行为。我想要第一个引用中描述的行为,但却经历了第二个引用中的行为。问题是,是否有一些设置可以获得第一篇文档中描述的行为。 - InI4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接