我有云数据库,所以我有所有设备的注册ID。
我必须使用服务器发送消息吗? 我可以仅使用regID将消息直接从一台Android设备发送到另一台吗? 我可以使用Android设备作为服务器吗?
如果每个Android设备都可以访问注册ID数据库,则可以在不使用服务器的情况下将GCM消息发送到其他设备。 您只需执行通常从服务器执行的对GCM的HTTP请求即可。 该请求将直接发送到GCM服务器,并从那里发送到另一台设备上的您的应用。 要执行该请求,除了接收者注册ID外,您的应用还需要知道发送者ID(用于注册到GCM)和API密钥(用于发送消息)。
您不能使用gcm.send
方法。 该方法将消息发送到您的服务器。
是的,您可以向服务器发送消息:
data.putString("my_message", "Hello World");
data.putString("my_action", "com.google.android.gcm.demo.app.ECHO_NOW");
String id = Integer.toString(msgId.incrementAndGet());
gcm.send(SENDER_ID + "@gcm.googleapis.com", id, data);
您可以直接将消息发送到其他设备,因为只有Google的服务器知道接收方设备的位置。 消息传递方案如下所示:
Sender > Google's server > Your server > Google's server > Receiver
从理论上讲,您可以将接收者的ID添加到发送数据中,在服务器上获取它,然后将新消息发送到具体设备。
您可以在文档中找到更详细的描述