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이 표시되었습니다. 이 문제는 무엇이 될 수 있습니까?

+0

하나 이상의 기기에서 사용해 보셨습니까? –

+0

예 두 대의 장치에서 테스트되었습니다. 그것은 그들 중 누구에게도 효과가 없었습니다. – keen

+0

장치가 GCM에 이미 등록되어 있으면 null을 반환하고, 그렇지 않으면 장치를 등록하고 장치 ID를 반환합니다. –

답변

0

어떻게 내 앱 ID가 작동하지 않았는지 확인하십시오. Google 콘솔에 앱을 다시 생성하면 프로젝트에서 사용한 새 ID가 생성되어 작업을 시작했습니다.

관련 문제