我正在研究Android的推送通知。一切都工作正常,但突然gcm id(gcm标记)被返回为null ..我应该重新注册项目并获得一个新的项目ID,如提到here ..或我在某个地方出错了。请教育我 我试过this 下面是示例代码
@Override
protected void onHandleIntent(Intent intent) {
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
InstanceID instanceID = InstanceID.getInstance(this);
senderId = getResources().getString(R.string.google_app_id);
try {
token = instanceID.getToken(senderId,GoogleCloudMessaging.INSTANCE_ID_SCOPE,null);
Log.d("register_Token: ", token);
sendRegistrationToServer(token);
} catch (IOException e) {
e.printStackTrace();
sharedPrefs.edit().putBoolean(QuickstartPreferences, false).apply();
}
}
答案 0 :(得分:0)
我不确定返回空白注册ID的确切位置,但认识到GCM注册是异步事件并且不会立即发生并不重要。因此,立即调用GCMRegistrar.getRegistrationId(this);
将不会仅为空白字符串提供注册ID。
为了在您的设备注册GCM服务器后正确获取注册ID,您需要在GCMBaseIntentService中处理以下回调:
protected void onRegistered(Context context, String registrationId)
这是您将获得注册ID以及您应该在何处注册应用程序服务器的地方。
@Override
protected void onRegistered(Context context, String registrationId) {
Log.i(TAG, "Device registered: regId = " + registrationId);
displayMessage(context, getString(R.string.gcm_registered,
registrationId));
ServerUtilities.register(context, registrationId);
}