这似乎是目前所需要的:
客户1 - >后端 - > GCM - >客户2。
但我不确定后端服务器在我不希望存储任何数据的场景中会做什么。我只想通过这种方式通过GCM与客户进行客户交互:
客户1 - > GCM - >客户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调用到服务器,这在设备上无法真正完成)。如果发件人必须跟踪一千个令牌,则需要自行保留。
请注意,上述方案仅适用于“单个发送者 - 多个接收者/客户端”设置。如果您需要多个设备才能发送,您还需要让其他设备跟踪其接收器的注册令牌。这大大提高了复杂性。
至少,您确实要存储数据:将从发件人接收邮件的设备的注册令牌。但是,发送方也需要跟踪响应(用于调试和监视目的)。说完这一切之后,虽然技术上可以让您的客户端设备充当服务器/后端,但它会在设备上投入大量工作并且难以维护。我强烈建议至少设置一个非常简单的服务器。
希望这有帮助!