2015-11-03 138 views
9

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

回答

19

如果您正在寻找关于谷歌云通讯的基本知识,国际海事组织,你可以参考以下几点:

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

  1. 在创建一个新项目Google Developers Console。在此 步骤中,为了简单起见,您只需要注意2个值:Project Number,其中 将在客户端项目中用作SENDER_ID;和API server key,这将 在服务器项目被用作API_KEY(在凭证创建)。
  2. 为服务器端创建一个新的简单Android项目(基本源代码作为我在下面的链接中的答案)。
  3. 为客户端创建一个新的简单的Android项目(基本源代码作为我在下面的链接中的答案,我从原始源在Google Cloud Messaging - GitHub定制)。
  4. 运行客户端应用程序,您将获得注册令牌(意味着您的设备已成功注册)。然后,在服务器应用程序中粘贴(硬编码)该令牌CLIENT_REGISTRATION_TOKEN变量(或编写代码将此令牌发送到服务器应用程序)。

你可以阅读更多在以下几个问题,其中的一个,你以前跟你以前的一个问题阅读:

  1. How to implement a GCM Hello World for Android using Android Studio
  2. Adding Google Cloud Messagin (GCM) for Android - Registration process

对于更多信息:

Google Cloud Messaging: Overview

证书

  • 发件人ID

    关键概念,当您配置API项目(给定为“项目编号”,在谷歌开发者控制台)创造了一个独特的数值。发件人ID在注册过程中用于标识允许将消息发送到客户端应用程序的应用程序服务器。

  • API密钥保存在应用程序服务器上的API密钥,可让应用程序服务器授权访问Google服务。在HTTP中,API密钥是 ,包含在发送消息的POST请求的标头中。在XMPP中, API密钥在SASL PLAIN身份验证请求中用作 密码来验证连接。当您配置您的API项目时,您获得API密钥 。
  • 注册令牌 GCM连接服务器向客户端应用程序发出的ID,允许其接收消息。请注意, 注册令牌必须保密。

希望这有助于!

+0

好了,服务器只在乎的注册ID。它根本不关心令牌。 – mrQWERTY

+3

注册令牌=在客户端应用程序获得的注册ID,那么您必须将其提供给服务器应用程序 – BNK

+0

也许您的意思是SENDER_ID,正如我在第一步中说的 – BNK

12

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

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

+0

有时SO用户比谷歌解释得更好,我不知道这是否简单。谢谢。 –

-1

我仍然成功地与注册ID注册方法,直到2016年5月11日

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