我花了很多时间来摸索解决与GCM
相关的问题以及推送通知的落后问题。
我的Android应用会收到推送消息,但也会在24小时后通过我的PHP
服务器发送CURL
功能。
我已经尝试将time_to_live设置为0或86400,并且delay_while_idle都设置为true而为false,没有任何反馈,消息会继续延迟到达。
我已经尝试过Push Notification Fixer,然后每5分钟设置一次发送心跳,没有任何好处。
我想象如果设备在发送心跳时通过计划任务(计时器,AlarmManager
或其他...)处于待机状态(因此具有出色的互联网),则保持与互联网设备的活动连接(所以让我们这样做#39 ;每5分钟说一次)可能会收到消息。
但是,由于GCM
注意到设备处于联机状态并在队列中发送消息,因此连接处于活动状态需要多长时间?
此问题还会影响FCM
以及GCM
?
谢谢。
答案 0 :(得分:0)
我认为从GCM接收推送通知需要多长时间或多少分钟没有明确/准确的答案。因为就像你说的那样,推送通知可以设置其接收消息的选项,如:
priority
- 如果您将GCM的优先级设置为high
,除了唤醒睡眠设备外,它还会尽快将消息传递给设备,而不会有任何延迟。如果您将优先级设置为normal
,则无法在睡眠设备上打开网络连接,并且可能会延迟其投放以节省电量。
delay_while_idle flag
- GCM通常会在发送后立即发送消息。但是,这可能并非总是可行。例如,如果平台是Android,则可以关闭,离线或以其他方式不可用设备。或者,发件人本身可能会请求在设备变为活动状态之前使用delay_while_idle
标志传递消息。最后,GCM可能会故意延迟消息,以防止应用程序消耗过多的资源并对电池寿命产生负面影响。
另外,请注意互联网和wifi连接也会影响推送消息的时间。
如果您想要推送消息的平均速度,只需在SO question的答案中查看视频。
有关详细信息,请查看此page和此SO question。