【发布时间】:2013-05-14 06:41:50
【问题描述】:
像WhatsApp 这样的很多应用程序都依赖GCM 在设备空闲或应用程序在后台运行时向设备发送通知。 GCM 消息只是告诉应用程序从服务器同步,然后 XMPP 用于进行实际聊天(传递有效负载)。但是,依靠GCM 发送消息是一个好的决定吗?因此,在我的情况下,当一个用户想与另一个用户交谈时,他会向我的服务器发送一条消息,然后我通过GCM 将消息传递给另一个用户。我了解GCM 不是 100% 可靠,但我可以通过超时和确认消息确保可靠性。如果我完全同意GCM,还有什么可能伤害我的吗?
不使用XMPP 的原因是扩展XMPP 服务器(我不太熟悉)需要付出很多努力,但在GCM 的情况下,我的很多扩展问题都得到了解决由谷歌提供。
【问题讨论】:
-
取决于你的应用程序的性质,如果你打算在 iPhone、Symbian 等上扩展你的应用程序,依赖 GCM 听起来并不好。
-
@ChorWaiChun 所以如果想只保留 android 就好了?
-
我会说没关系,到目前为止,我从未从我的服务器接收任何 GCM 失败,并且在我的项目中,我还确实将整个消息 (xml) 包含到了有效负载中,并分配了一个 ID ,所以当手机连接到我的服务器时,我们仍然可以在 GCM 失败的极少数情况下跟踪他没有收到的消息。
-
Google 最近在其 ccs 选项中推出了支持 XMPP 的 GCM。从外观上看,您将获得两全其美,GCM 连接和 XMPP 可靠性
-
“像 WhatsApp 这样的很多应用程序都依赖 GCM” - WhatsApp 没有适当的 GCM 权限。它可能做的是使用 GCM 背后的相同原理——即使在后台或手机处于睡眠状态时,也保持与服务器的长时间运行连接以接收消息。传入的网络数据包将唤醒设备有足够的时间让应用程序获取唤醒锁并保留消息。
标签: android xmpp google-cloud-messaging