Google-Cloud-Messaging服务的可靠性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google-Cloud-Messaging服务的可靠性相关的知识,希望对你有一定的参考价值。

如果我可以将我的服务器中发生的重要事件通知给应用程序用户,我正在做研究。所以,我尝试了Google-Cloud-Messaging来实现推送通知。不幸的是,我可以看到消息传递延迟,没有确切的延迟交付时间。我甚至尝试通过gmail发送邮件,并且gmail本身的推送通知迟到了,没有时间限制。所以,我发现我无法使用谷歌云消息服务向用户提供重要事件。有没有其他方法可以通过重要事件通知用户?

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

感谢您的帮助。

答案

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

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

另一答案

实际上,这是由于5228,5229,5230端口在我的服务器中阻塞。因此,它需要被网络管理员解除阻止。如果像Facebook应用程序,gmail等其他接收器处于活动状态并且说它们被您的服务器管理员淹没,那么它们同步并没有成功,并且在以后同步您的应用程序时需要时间。

另一答案

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

另一答案

这可能是由Google Cloud Messaging中不切实际的心跳间隔引起的。

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)。

以上是关于Google-Cloud-Messaging服务的可靠性的主要内容,如果未能解决你的问题,请参考以下文章

微服务基础服务的基本组件

服务发现的基本原理

OSGI的系统服务

Android四大组件——Service后台服务前台服务IntentService跨进程服务无障碍服务系统服务

微服务 六:服务网关

服务治理