【发布时间】:2014-04-19 10:05:51
【问题描述】:
我有云数据库,所以我有所有设备的注册 ID。
我必须使用服务器来发送消息吗?我可以使用 regID 直接从一台 Android 设备向另一台设备发送消息吗?我可以使用安卓设备作为服务器吗?
【问题讨论】:
标签: android push-notification google-cloud-messaging
我有云数据库,所以我有所有设备的注册 ID。
我必须使用服务器来发送消息吗?我可以使用 regID 直接从一台 Android 设备向另一台设备发送消息吗?我可以使用安卓设备作为服务器吗?
【问题讨论】:
标签: android push-notification google-cloud-messaging
如果每个 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 添加到发送数据中,在您的服务器上获取它,然后将新消息发送到具体设备。
您可以在documentation中找到更详细的说明
【讨论】: