如果我可以将我的服务器中发生的重要事件通知给应用程序用户,那么我正在做研究。所以,我尝试了Google-Cloud-Messaging来实现推送通知。 不幸的是,我可以看到消息传递延迟,没有确切的延迟交付时间。我什至 尝试通过gmail发送邮件和gmail本身的推送通知迟到没有时间限制。 所以,我发现我无法使用谷歌云消息服务向用户提供重要事件。 有没有其他方法可以通过重要事件通知用户?
注意:我不想使用短信。而且我也不想从应用程序中拉出来,因为它会消耗电池寿命。
提前感谢您的帮助。
答案 0 :(得分:2)
实际上,这是由于5228,5229,5230端口在我的服务器中阻塞。因此,它需要被网络管理员解除阻止。如果像Facebook应用程序,gmail等其他接收器处于活动状态,并且说它们被您的服务器管理员淹没,那么它们同步并不会成功,并且在以后同步您的应用程序时需要时间。
答案 1 :(得分:1)
可能是由于其他一些问题,或者可能是由于发送服务器的地理位置和接收方的IP地址造成的。
答案 2 :(得分:1)
GCM是您用来尽快将消息推送给用户的方法。您可以在消息中指定何时需要传递 - 可能是gmail使用delay_while_idle标志来保留电池。根据我的经验,GCM非常非常快。如果您在很短的时间内将多个更新推送到同一设备,您应该只会遇到限制。
答案 3 :(得分:1)
这可能是由Google云消息传递中的不切实际的心跳间隔引起的。
GCM通过维护从Android设备到Google服务器的空闲套接字连接来工作。这很好,因为它几乎不消耗电池电量(与轮询相反),并且它允许设备在消息到达时立即被唤醒。
为了确保连接保持活动状态,Android会在移动连接上每28分钟发送一次心跳,在WiFi上每15分钟发送一次心跳。如果心跳失败,则连接已终止,GCM将重新建立连接并尝试检索任何挂起的推送通知。心跳间隔越高,消耗的电池越少,设备从睡眠中唤醒的次数就越少。
但是,这需要付出很大的代价:心跳间隔越长,识别断开的套接字连接所需的时间就越长。在部署GCM之前,Google尚未在现实生活中充分测试这些时间间隔。这些间隔的问题是由网络路由器和移动运营商引起的,他们在几分钟不活动后断开空闲套接字连接。
我的博客上提供了更多信息:
http://eladnava.com/google-cloud-messaging-extremely-unreliable/
作为一种解决方法,请考虑Pushy(https://pushy.me),它是GCM / FCM的直接替代品,可大大提高通知速度和速度。可靠性(完全披露 - 我创立了Pushy)。