2012-11-09 6 views
7

GCM에 대한 기사를 읽은 후 정기적으로 등록 ID를 새로 고칠 수 있습니다. 푸시 알림을 사용하여 응용 프로그램을 만들려고하지만 새로 고친 등록 ID를 처리하는 방법을 잘 모르겠습니다.애플리케이션이 시작될 때마다 Google Cloud Messaging (GCM) 등록 ID를 요청합니다.

첫 번째 전략은 앱이 시작될 때마다 등록 ID를 요청하여 앱 서버로 전송하는 것입니다. 작동하는 것처럼 보이지만 어떻게 든 소리가납니다 ...

이렇게하는 것이 좋습니까? 기본적으로

+0

[Android에서 Google 클라우드 메시징의 등록 ID 변경 처리] (http://stackoverflow.com/questions/16838654/handling-registration-id-changes-in-google-cloud-messaging-on) 중복 가능 -기계적 인조 인간) – Eran

답변

5

, 당신은 당신의 주요 활동에서 다음을 수행해야합니다이 응용 프로그램은 registration_id 추가로 의도 com.google.android.c2dm.intent.REGISTRATION를 수신 할 때마다

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_layout); 

    GCMRegistrar.checkDevice(this); 
    GCMRegistrar.checkManifest(this); 

    final String regId = GCMRegistrar.getRegistrationId(this); 

    if (regId.equals("")) { 
     GCMRegistrar.register(this, GCMIntentService.GCM_SENDER_ID); 
    } else { 
     Log.v(TAG, "Already registered"); 
    } 
} 

는 그 후에 당신은 당신의 애플 리케이션 서버, 에 등록 ID를 보내야합니다. 이것은 Google이 주기적으로 앱의 ID를 업데이트 할 때 발생할 수 있습니다.

당신은

public class GCMIntentService extends GCMBaseIntentService { 

    // Also known as the "project id". 
    public static final String GCM_SENDER_ID = "XXXXXXXXXXXXX"; 

    private static final String TAG = "GCMIntentService"; 

    public GCMIntentService() { 
     super(GCM_SENDER_ID); 
    } 

    @Override 
    protected void onRegistered(Context context, String regId) { 
     // Send the regId to your server. 
    } 

    @Override 
    protected void onUnregistered(Context context, String regId) { 
     // Unregister the regId at your server. 
    } 

    @Override 
    protected void onMessage(Context context, Intent msg) { 
     // Handle the message. 
    } 

    @Override 
    protected void onError(Context context, String errorId) { 
     // Handle the error. 
    } 
} 

자세한 내용은, 내가 (다시) 것 : 자신의 구현 com.google.android.gcm.GCMBaseIntentService을 확장하여 예컨대을이를 writing the client side codethe Advanced Section of the GCM documentation에 대한 문서를 읽을 수 있습니다.

희망 하시겠습니까?

1

등록 새로 고침은 새 GCM 라이브러리에 포함되어 있지 않습니다. Costin Manolache

'정기'새로 고침의

단어는 결코 발생하지 않으며, 등록 갱신은 새로운 GCM 라이브러리에 포함되지 않습니다.

등록 ID 변경의 유일한 알려진 원인은 업그레이드 중 앱 의 메시지가 수신되면 자동으로 등록 해제되는 오래된 버그입니다. 이 버그가 해결 될 때까지 앱은 업그레이드 후 register()를 호출해야하며, 지금까지는 등록 ID가 개로 변경 될 수 있습니다. unregister()를 호출하면 대개 명시 적으로 등록 ID가 변경됩니다.

제안/해결 방법은 임의의 식별자 (예 : )를 공유 환경 설정으로 저장하는 것입니다. 각 앱을 업그레이드 할 때 식별자와 새로운 등록 ID를 업로드 할 수 있습니다. 이 은 또한 서버 측에서 업그레이드 및 등록 등록을 추적 및 디버깅하는 데 도움이 될 수 있습니다.

관련 문제