2013-01-17 69 views
4

如果我可以将发生在我的服务器上的重要事件通知给应用程序用户,我正在进行研究。所以,我试着Google-Cloud-Messaging实施推送通知。 不幸的是,我可以看到邮件迟交,没有确切的延迟交货时间。我甚至用 通过在Gmail中发送邮件进行尝试,并且推送通知本身到达迟到,没有时间限制。 因此,我发现我无法使用谷歌云消息服务向用户提供重要事件。 有没有其他办法可以通知用户重要事件?Google-Cloud-Messaging服务的可靠性

注意:我不想使用短信。而且我不想从应用程序拉太多,因为它会消耗电池寿命。

感谢您的帮助提前。

回答

1

GCM是您用来将消息尽快推送给用户的方式。您可以在消息中指定何时需要传递消息 - 可能是使用delay_while_idle标志保存电池的gmail。根据我的经验,GCM真的非常快。如果您要在很短的时间内将多个更新推送到同一设备,则只应该体验节流。

https://developer.android.com/google/gcm/adv.html

1

也许是由于其他问题,也可能是由于发送服务器的地理位置和接收方的IP地址。

2

其实,它5228,5229,5230端口是在我的服务器块所致。所以,它需要被网络管理员解锁。另外,如果facebook应用,gmail等其他接收器处于活动状态并表示它们已被您的服务器管理员占用,则它们将同步进行,而不会成功,并且在稍后同步您的应用时需要时间。

1

这可能是由Google Cloud Messaging中不现实的心跳间隔造成的。

GCM通过维护从Android设备到Google服务器的空闲套接字连接工作。这很好,因为它几乎不消耗电池电量(与轮询相反),并且它允许在消息到达时立即唤醒设备。

为确保连接保持活动状态,Android会在移动连接上每28分钟发送一次心跳,并在WiFi上每15分钟发一次心跳。如果心跳失败,连接已终止,GCM将重新建立并尝试检索任何挂起的推送通知。心跳间隔越高,电池消耗越少,设备从睡眠中醒来的次数也越少。

但是,这样做的代价很大:心跳间隔越长,识别断开的套接字连接所用的时间就越长。在部署GCM之前,谷歌尚未在实际情况下对这些时间间隔进行足够彻底的测试。这些时间间隔的问题是由网络路由器和移动运营商所造成的,他们在闲置几分钟后断开空闲套接字连接。

更多信息,请在我的博客:

http://eladnava.com/google-cloud-messaging-extremely-unreliable/