如果我没有任何数据要存储,我在使用GCM时是否需要后端服务器作为中介?

时间:2015-06-11 22:38:26

标签: android google-cloud-messaging

这似乎是目前所需要的:

客户1 - >后端 - > GCM - >客户2。

但我不确定后端服务器在我不希望存储任何数据的场景中会做什么。我只想通过这种方式通过GCM与客户进行客户交互:

客户1 - > GCM - >客户2。

这可能吗?

2 个答案:

答案 0 :(得分:2)

GCM旨在将通知从后端发送到设备,反之亦然。 https://developers.google.com/cloud-messaging/

所以以下选项是可行的:

客户1 - >后端 - > GCM - >客户端2.(HTTP)

客户1 - > GCM - >后端 - > GCM - >客户2.(XMPP)

答案 1 :(得分:1)

在GCM中,发件人(通常是后端)需要具有您从Developers Console获得的API密钥。此API密钥用于发送到GCM服务器的每个HTTP请求,作为发送消息的授权形式。

客户端需要使用发件人ID进行注册,该ID来自开发​​人员控制台上获得API密钥的同一项目。这导致客户端发送给服务器/发送者的注册令牌。此令牌用于标识来自其他客户端设备的客户端设备。

demo app实际上有一个类似于你想要的设置:它既是发送者又是接收者。这只能轻松工作,因为我们知道只有一个发送者和一个接收者。当有多个接收器时,困难就开始了。发件人需要跟踪他们的所有注册令牌。您需要通知每个新注册人的注册令牌的一个发件人(您需要在GCM外部发送 - 通常通过POST调用到服务器,这在设备上无法真正完成)。如果发件人必须跟踪一千个令牌,则需要自行保留。

请注意,上述方案仅适用于“单个发送者 - 多个接收者/客户端”设置。如果您需要多个设备才能发送,您还需要让其他设备跟踪其接收器的注册令牌。这大大提高了复杂性。

至少,您确实要存储数据:将从发件人接收邮件的设备的注册令牌。但是,发送方也需要跟踪响应(用于调试和监视目的)。说完这一切之后,虽然技术上可以让您的客户端设备充当服务器/后端,但它会在设备上投入大量工作并且难以维护。我强烈建议至少设置一个非常简单的服务器。

希望这有帮助!