我将从手头的项目构想开始:
我们正在尝试制作一个需要在手机之间发送消息的简单应用程序。说有手机A和手机B,两者都安装了应用程序。电话A通过应用程序向B发送消息,B接收消息。 B可以做同样的事情并向手机A发送消息。
由于我们希望从Gingerbread开始定位,因此谷歌的Wifip2p是不可能的,因为它需要API 14及更高版本。
我读到GCM,虽然我理解这个概念,但还有一些我还没有完成的事情。应用程序的每个实例都向服务器注册,然后服务器保存ID,以便以后可以使用它与GCM进行通信,GCM可以使用注册ID将消息传递给手机。
我不明白的是,手机A将如何知道与手机B对应的ID,以告诉服务器将消息发送到手机B.
我非常感谢你的帮助,谢谢。
EDITTED
根据没有答案,我想我无法正确表达我的问题。
据我所知,这个系统基于三个因素:服务器,GCM和您的设备。
设备向服务器注册,服务器保存设备的注册ID,稍后将用于将其发送到GCM,以便GCM可以向设备发送相应的消息。
我不明白的是如何执行以下程序:
PhoneA希望向PhoneB发送消息,因此phoneA会将此消息发送到服务器,然后服务器会将其传递给GCM,然后GCM将其传递给电话B.
这个解释很好,在这一切的抽象视野中。但是, phoneA如何告诉服务器它希望将消息传递给phoneB。 phoneA如何知道哪个ID对应于phoneB?
希望这可以解决它。
答案 0 :(得分:3)
电话A不需要知道电话B的ID。只需在服务器中创建一个方法,在您连接时提供您感兴趣的客户列表(电话B,C,D等)。
向服务器发送消息时,请包含要传送到的电话的句柄。在我看来,这不应该是其他手机的GCM注册ID,而是服务器生成的唯一句柄。
为此,您需要实施your server -> phone A
通信或使用GCM将客户列表作为通知提供。