Android:GCM应用程序服务器维护注册ID

时间:2013-09-29 12:28:22

标签: android google-app-engine push-notification google-cloud-messaging

我正在尝试为我的Android应用程序实施GCM推送通知。我已在我的Android应用中通过引用this link实施了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可用于部署服务器端代码,方法是参考link 根据我的知识,每个Android应用程序实现对客户端的推送通知,他们将需要所有注册ID的列表。以下是我的一些问题

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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