Я знаю, что есть много вопросов об этом, но я не мог понять решение этих вопросов.проблема с получением идентификатора token в android
Я получаю null в токене от GCM. многие люди сделали это с помощью класса, но я делаю это в фоновом потоке в том же классе. Он возвращает null в regId.
OnCreate
if (checkPlayServices()) {
gcm = GoogleCloudMessaging.getInstance(this);
regid = getRegistrationId(context);
if (regid.isEmpty()) {
Log.e(TAG, "registering in background");
registerInBackground();
} else {
Log.e(TAG, "Notification Token : " + regid);
user.setNotificationToken(regid);
}
} else {
MyLog.i(TAG, "No valid Google Play Services APK found.");
}
RegisterInBackgroud(), если устройство не зарегистрировано ранее.
private void registerInBackground() {
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
String msg = "";
try {
Log.e(TAG, "doing in background");
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
if(gcm != null)
{
Log.e(TAG, "GCM is not null");
}
regid = gcm.register(SENDER_ID);
Log.e(TAG, "token id:" + regid);
msg = "Device registered, registration ID=" + regid;
storeRegistrationId(context, regid);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
}
return msg;
}
}.execute(null, null, null);
}
Я попытался зарегистрировать его, чтобы он отображал значение null в regId. что может быть проблемой в этом?
Вы пробовали его на нескольких устройствах? –
Да, я тестировал два устройства. Ни в одном из них это не сработало. – keen
Дело в том, что когда ваше устройство уже зарегистрировано в GCM, оно вернет null, иначе оно зарегистрирует ваше устройство и вернет идентификатор устройства. –