Google GCM,令牌与注册ID

我很困惑注册ID和令牌之间的关系。 在Google的GCM教程中,我们在开始时注册注册ID。 但是,我们也得到一个令牌。 现在,在图中,我们发送注册ID到目标服务器。 但是,我们也发送令牌吗? 我知道该令牌是从注册ID派生的。 该令牌是否被用作GCM与应用程序之间的authentication机制,服务器从来不知道该令牌?

Solutions Collecting From Web of "Google GCM,令牌与注册ID"

如果您正在寻找有关Google Cloud Messaging,IMO的基本知识,请参阅以下内容:

基本上,你需要做的步骤:

  1. 在Google Developers Console上创build一个新项目。 在这一步,为简单起见,您只需要注意2个值: Project Number ,在客户端项目中将用作SENDER_ID ; 和在服务器项目中用作API_KEY API server key (在Credentials中创build)。
  2. 为服务器端创build一个新的简单的Android项目(基本的源代码作为我的答案在下面的链接)。
  3. 为客户端创build一个新的简单的Android项目(基本的源代码作为我在下面的链接的答案,我从谷歌云消息传递 – GitHub原始来源定制)。
  4. 运行客户端应用程序,您将获得注册令牌(意味着您的设备已成功注册 )。 然后,在服务器应用程序的CLIENT_REGISTRATION_TOKENvariables处粘贴(硬编码)此令牌(或者编写代码将此令牌发送到服务器应用程序)。

您可以在以下问题中阅读更多内容,其中之一是您之前阅读过以前的问题之一:

  1. 如何使用Android Studio实现Android的GCM Hello World
  2. 为Android添加Google云Messagin(GCM) – 注册过程

了解更多信息:

Google云消息传递的重要概念:概述

证书

  • 发件人IDconfiguration您的API项目时创build的唯一数值(在Google Developers Console中作为“项目编号”给出)。 在注册过程中使用发件人ID来标识允许将消息发送到客户端应用程序的应用程序服务器。
  • API密钥保存在应用程序服务器上的API密钥,可让应用程序服务器授权访问Google服务。 在HTTP中,API密钥包含在发送消息的POST请求头中。 在XMPP中,API密钥在SASL PLAIN身份validation请求中用作密码来validation连接。 您在configurationAPI项目时获得API密钥。
  • 注册令牌由GCM连接服务器发送给客户端应用程序的ID,允许其接收消息。 请注意,注册代币必须保密。

希望这可以帮助!

GCM现在使用InstanceID的概念,代表设备(Android或iOS)上一个应用程序的单一安装。 每个InstanceID可以发出多个令牌。 这些令牌用于标识InstanceID并可以过期并刷新。

在客户端设备上,初始化一个InstanceID,然后使用该InstanceID 生成一个令牌 (注册令牌)。 您将该令牌发送到您的服务器,该服务器使用令牌将消息发送到InstanceID(已安装的应用程序)。 如果由于任何原因(例如,应用程序被卸载或令牌遭到破坏)导致该令牌失效,则应该生成一个新的令牌并将其发送到您的服务器。

直至2016年5月11日,我仍然使用注册ID方法成功注册

 if (checkPlayServices()) { gcm = GoogleCloudMessaging.getInstance(this); regid = getRegistrationId(context); if (regid.isEmpty()) { registerInBackground(); } } else { Log.i(TAG, "No valid Google Play Services APK found."); } 

APA91bHLUfr71D6K7VTrRH3LGiLFxGNr3qRi3xOB_yNl0fLYsqhlgYXxHzOhQx2WKgqZI3sqxa1ZPORa0-5YBZ1_OFLm9cEg1bTh7wtrpCsHW91MSs2BMIXrHEqyjj2TeoVxnAzA5U8s