0
나는 이것에 대해 많은 질문이 있지만 그 질문에서 해결책을 찾아 낼 수 없다는 것을 알고 있습니다.android에서 토큰 ID를 가져 오는 데 문제가 있음
GCM의 토큰에 null이 표시됩니다. 많은 사람들이 클래스를 사용하여이 작업을 수행했지만 동일한 클래스의 백그라운드 스레드에서 을 수행하고 있습니다. regId에 null을 반환합니다. 디바이스가 이전에 등록되어 있지 않은 경우
에서 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);
}
버그를 기록하려고했는데 regId에 null이 표시되었습니다. 이 문제는 무엇이 될 수 있습니까?
하나 이상의 기기에서 사용해 보셨습니까? –
예 두 대의 장치에서 테스트되었습니다. 그것은 그들 중 누구에게도 효과가 없었습니다. – keen
장치가 GCM에 이미 등록되어 있으면 null을 반환하고, 그렇지 않으면 장치를 등록하고 장치 ID를 반환합니다. –