2016-08-11 5 views
0

ここでお手伝いできますか?私のコードは3日前と同じように動作していました。今すぐ実行すると、自分のデバイス用にGCMトークンが生成されます。ここに私のコードは次のとおりです。GCMがトークンを与えていない

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

アプリケーションフォルダ – param

+0

の.jsonファイルを確認してください。確認しました。私のAPI_KEYはコンソールのAndroid APIキー –

答えて

1

登録トークンを取得するには、Googleが登録トークンの作成と更新を処理するためにInstance ID APIを提供します。

これを使用するには、マニフェストファイルにInstanceIDListenerServiceを含める必要があります。そして、アプリケーションサーバの送信者IDを提供し、GoogleCloudMessaging.INSTANCE_ID_SCOPEに範囲を設定し、instanceID.getTokenを呼び出して、トークンを取得するために

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

注:メインスレッドでこのメソッドを呼び出さないでください。代わりに、ここで 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を確認してください。

関連する問題