Android Firebase云消息传递&x2B;安卓:静默通知的优先级
TLDR:通过FCM发送到Android设备的消息需要10秒到5分钟才能送达。可能是因为优先权。我将其设置为“高”,但它似乎没有保持在该值上 我为iOS和Android开发了一个应用程序。我的后端在Django上运行。对于我们的实时通信,我们最近开始使用Firebase云消息(FCM) 我成功地连接了Django服务器,并且能够向这两种设备发送消息 下面是构造消息的python代码。请注意,令牌数据稍后会动态追加,并且消息是静默通知Android Firebase云消息传递&x2B;安卓:静默通知的优先级,android,firebase,firebase-cloud-messaging,android-notifications,Android,Firebase,Firebase Cloud Messaging,Android Notifications,TLDR:通过FCM发送到Android设备的消息需要10秒到5分钟才能送达。可能是因为优先权。我将其设置为“高”,但它似乎没有保持在该值上 我为iOS和Android开发了一个应用程序。我的后端在Django上运行。对于我们的实时通信,我们最近开始使用Firebase云消息(FCM) 我成功地连接了Django服务器,并且能够向这两种设备发送消息 下面是构造消息的python代码。请注意,令牌数据稍后会动态追加,并且消息是静默通知 def _build_silent_message(not_i
def _build_silent_message(not_id, data):
"""Construct silent notifiation message.
Silent means that this message won't show up in the notifications hub
of the app.
"""
return {
'message': {
'data': {"data": data},
'apns': {
'payload': {
"notId": not_id, # notId HAS TO BE FIRST!!!
'aps': {
'content-available': 1
}
},
'headers': {
'apns-priority': '10'
},
},
'android': {
'priority': "high",
'data': {
"androidData": data,
'content-available': '1'
}
}
}
}
如您所见,我将Apple和Android的优先级都设置为“高”(/10)。在iOS上,所有消息都会立即传递。但在Android上,情况并非如此。信息到达手机前需要5分钟。我认为这可能是一个优先问题,因为各国:
高度优先。FCM尝试立即传递高优先级消息,允许FCM服务在必要时唤醒休眠设备,并运行一些有限的处理(包括非常有限的网络访问)
到目前为止还不错。我把优先权定得很高。但文件进一步指出:
高优先级消息通常会导致用户与应用程序交互。如果FCM检测到它们没有检测到的模式,您的消息可能会被取消优先级
我发送到这些设备的所有信息都需要与手机进行交互。但我所有的信息都是无声的。也许FCM认为我的消息不需要用户交互,因此优先级较低
有人知道如何解决这个问题吗
编辑:我使用安卓三星Galaxy S7和谷歌Pixel 2进行了测试。您无法访问FCM向设备发送消息的方式。仅仅因为您将消息标记为高优先级,并不意味着它是应该立即传递的高优先级消息 FCM将观察您的通知/FCM消息的交互性。如果用户通常不与他们进行交互,FCM将取消您的邮件优先级,从而延长传递时间 FCM在用户体验方面具有侵入性…FCM的创建方式不会让用户暴露于不相关的数据。可以把它想象成一个广告拦截器,让你远离打扰用户 查看有关FCM工作原理的官方文档
您的目标是哪个版本?您使用哪些设备进行测试?@Xenolion我的目标是最新版本。安卓27。我用Google Pixel 2和Galaxy S7进行了测试。在问题中添加了这些信息。您了解更多信息了吗?我正面临着同样的问题problem@swalkner对不起,我回复得这么晚。我没有那么注意我的收件箱。不,我无法解决这个问题。我们最终对我们公司所做的就是把所有的信息作为响亮的通知发送出去。这是一个糟糕的解决方案,但总比通过套接字向设备发送实时数据要好。@J.hester:我建议在生成的json中使用双引号,即
“
”,或者在整个json中只使用一个符号”
或“
,而不是两者的混合。因为即使在python
中这样做也可以,但在其他语言中可能无法正常工作。