2015-11-03 136 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