2016-08-11 55 views
0

你能幫我一下嗎?我的代碼像3天前一樣工作。現在,當我運行時,我無法獲取爲我的設備生成的GCM令牌。這裏是我的代碼:GCM不給Token

private void registerGCM() { 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
    String token = null; 

    try { 
     InstanceID instanceID = InstanceID.getInstance(this); 
     token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), 
       GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 


     Log.e(TAG, "GCM Registration Token: " + token); 

     // sending the registration id to our server 
     sendRegistrationToServer(token); 

     sharedPreferences.edit().putBoolean(Config.SENT_TOKEN_TO_SERVER, true).apply(); 
    } catch (Exception e) { 
     Log.e(TAG, "Failed to complete token refresh", e); 

     sharedPreferences.edit().putBoolean(Config.SENT_TOKEN_TO_SERVER, false).apply(); 
    } 
    // Notify UI that registration has completed, so the progress indicator can be hidden. 
    Intent registrationComplete = new Intent(Config.REGISTRATION_COMPLETE); 
    registrationComplete.putExtra("token", token); 
    LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete); 
} 
+0

檢查您的'gefaultSenderId',並確保您沒有禁用'GCM API.' –

+0

檢查您的.json文件在應用程序文件夾中 – param

+0

好吧,我檢查了我的API_KEY是一樣的Android API密鑰在控制檯 –

回答

1

取得註冊標記,谷歌提供了Instance ID API辦理登記令牌的創建和更新。

您必須在清單文件中包含InstanceIDListenerService才能使用它。

<service android:name="[.MyInstanceIDService]" android:exported="false"> 
    <intent-filter> 
     <action android:name="com.google.android.gms.iid.InstanceID"/> 
    </intent-filter> 
</service> 

然後以獲得令牌,呼叫instanceID.getToken,提供應用程序的服務器的發送者ID和範圍設置爲GoogleCloudMessaging.INSTANCE_ID_SCOPE

注意:不要在主線程中調用此方法;相反,使用 服務延伸 IntentService

下面是這種情況的示例代碼。

Public class RegistrationIntentService extends IntentService { 
    // ... 

    @Override 
    public void onHandleIntent(Intent intent) { 
     // ... 
     InstanceID instanceID = InstanceID.getInstance(this); 
     String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), 
       GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 


     // ... 
    } 

    // ... 
} 

欲瞭解更多信息,只需選中這個documentation,這完全sample code