1

我正在尝试为我的 Android 应用程序实现 GCM 推送通知。我通过引用此链接在我的 Android 应用程序中实现了 GCM 客户端。在 GCM 客户端它有一个方法:

/**
 * Sends the registration ID to your server over HTTP, so it can use GCM/HTTP or CCS to send
 * messages to your app. Not needed for this demo since the device sends upstream messages
 * to a server that echoes back the message using the 'from' address in the message.
 */
 private void sendRegistrationIdToBackend() 
 {
     // Your implementation here.
 }

我试图找出可以在后端存储注册 ID 的方式。在搜索时,我了解到可以通过参考此链接使用 Google App Engine 来部署服务器端代码 据我所知,每个 android 应用程序要向客户端实现推送通知,它们都需要所有注册 ID 的列表。以下是我的几个问题

  • 没有任何简单的机制来获取所有注册ID吗?
  • GCM 服务器不存储所有 id 吗?
  • 是否需要所有 GCM Server 应用程序来实现注册 ID 的存储方式?
  • 如果在向客户端发送更新时,我想将更新发送到所有已注册的设备,而不考虑任何标准,是否有任何方法可以做到这一点?我认为所有的应用程序都需要这种服务。难道没有一种通用的方法可以实现这一目标吗?还是我错过了什么?
4

1 回答 1

4
  • 获取安装您的应用程序的设备的所有注册 ID 的唯一方法是在您的服务器中维护这些设备的数据库。或者,您可以使用第三方提供商(例如 UrbanAirship)为您完成此操作。

  • GCM 服务器具有所有这些 ID,但没有返回给定应用程序的所有注册注册 ID 的 API 调用。

  • 每个使用 GCM 的应用程序都需要一个服务器端来维护已注册设备的列表,并向设备发送消息。您可以使用 3rd 方推送提供商为您执行此操作。

  • 如果要将更新发送到所有已注册的设备,则必须指定要发送消息的所有注册 ID。如果所有设备都收到相同的消息,您可以在一个 HTTP 请求中将消息发送到 1000 个注册 ID(如果您有超过 1000 个设备,则必须执行多个请求)。

于 2013-09-29T16:24:03.140 回答