GCM没有给出令牌

时间:2016-08-11 12:09:32

标签: android google-cloud-messaging

你可以帮帮我吗?我的代码就像3天前一样工作。现在,当我运行时,我无法为我的设备生成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);
}

1 个答案:

答案 0 :(得分:1)

要获取注册令牌,Google会提供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