Android从GCM接收推送需要多长时间?

时间:2016-06-22 09:58:12

标签: android google-cloud-messaging connection delay

我花了很多时间来摸索解决与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

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为从GCM接收推送通知需要多长时间或多少分钟没有明确/准确的答案。因为就像你说的那样,推送通知可以设置其接收消息的选项,如:

  • priority - 如果您将GCM的优先级设置为high,除了唤醒睡眠设备外,它还会尽快将消息传递给设备,而不会有任何延迟。如果您将优先级设置为normal,则无法在睡眠设备上打开网络连接,并且可能会延迟其投放以节省电量。

  • delay_while_idle flag - GCM通常会在发送后立即发送消息。但是,这可能并非总是可行。例如,如果平台是Android,则可以关闭,离线或以其他方式不可用设备。或者,发件人本身可能会请求在设备变为活动状态之前使用delay_while_idle标志传递消息。最后,GCM可能会故意延迟消息,以防止应用程序消耗过多的资源并对电池寿命产生负面影响。

来源: GCM documentation

另外,请注意互联网和wifi连接也会影响推送消息的时间。

如果您想要推送消息的平均速度,只需在SO question的答案中查看视频。

有关详细信息,请查看此page和此SO question