2012-09-26 3 views
1

내 앱을 C2DM에서 GCM으로 이전 중이지만 등록 ID를 전송할 서버는 여전히 재미있는 C2DM ID입니다. 그래서 내 질문에 내 응용 프로그램에서 할 수 있도록 서버 GCM ID 식별 할 수 있습니다. Google은 등록 ID와 함께 새 비트를 보내도록 권장합니다. 어떻게해야합니까? 예를 들어주세요.GCM 및 C2DM ID 구분하기

답변

1

다음은 AppEngine을 사용하지 않을 경우 필요한 작업입니다.

서버에 이미 모든 등록 ID (reg_id)를 저장하는 테이블이 있어야합니다. 이 테이블에 다른 열을 추가해야합니다 (예 : 'is_gcm_reg_id'). 현재 열이 모두 C2DM reg_ids이므로 기존 행을 모두 기본값으로 '0'으로 설정합니다. 원한다면 GCM reg_ids를 저장할 새 테이블을 만들 수도 있습니다.

GCM 지원 애플리케이션에서 서버에 reg_id가 GCM reg_id임을 알리면됩니다. reg_id를 서버에 업로드하는 방법은 언급하지 않았습니다 (웹 서비스 호출? 간단한 POST 요청?). 웹 서비스 호출을 사용하는 경우 새 GCM 사용 앱에서만 독점적으로 사용할 새 메소드를 만드십시오. POST 요청을 사용하는 경우 'gcm = true'와 같은 다른 키 값 쌍을 추가하면 서버에서이 kvp를 찾아야합니다.

마지막으로 reg_id가 GCM인지 확인하고 'is_gcm_reg_id'열 필드 (또는 새 GCM 테이블)를 적절하게 업데이트해야합니다.

+0

안녕하세요. 감사합니다. 좋은 방법 .. 시도해 볼게요. 웹 서비스 호출을 사용하고 있습니다. – Rookie

0

App Engine을 사용하여 GCM/C2DM을 구현한다고 가정합니다.

App Engine의 deviceInfo 엔티티에는 이미 "유형"필드가 있습니다. 이것은 "ac2dm"또는 "gcm"이라고 말하기 위해 수정할 필드입니다.

쉬운 방법은 "ac2dm"대신 "gcm"을 전달하는 새 등록 요청을 만드는 것입니다. AppEngine 프로젝트를 살펴보고 RegistrationInfo 클래스를 찾으십시오. register() 메소드를 보라. 간단히 "ac2dm"을 "gcm"으로 바꿉니다.

EX는 :

 // original 
public void register() { 
    log.info("register " + this); 
    try { 
     doRegister(getDeviceRegistrationId(), "ac2dm", getDeviceId(), getAccountName()); 
    } catch (Exception e) { 
     log.info("Got exception in registration: " + e + " - " + e.getMessage()); 
     for (StackTraceElement ste : e.getStackTrace()) { 
     log.info(ste.toString()); 
     } 
    } 
    log.info("Successfully registered"); 
    } 

     // new version 
    public void register() { 
    log.info("register " + this); 
    try { 
     doRegister(getDeviceRegistrationId(), "gcm", getDeviceId(), getAccountName()); 
    } catch (Exception e) { 
     log.info("Got exception in registration: " + e + " - " + e.getMessage()); 
     for (StackTraceElement ste : e.getStackTrace()) { 
     log.info(ste.toString()); 
     } 
    } 
    log.info("Successfully registered"); 
    } 

당신은 아마이 작업을 얻기 위해 RPC 서비스를 다시 컴파일해야합니다.

이제 서버가 deviceInfo 엔터티의 "gcm"태그를 확인하고 그에 따라 작동하는지 확인해야합니다. 또한 읽지 않은 경우이 내용을 읽으십시오. https://developer.android.com/guide/google/gcm/c2dm.html