Inicio / gcm 등록 예제

gcm 등록 예제

SDK 도구가 설치되어 있으면 프로젝트에 종속성을 추가할 수 있습니다. GCM 메시지 수신. 인스턴스 ID는 GcmReceiver 및 GcmListener서비스가 메시지를 수신하고 처리하는 간단한 수단을 제공하는 동안 쉽게 등록 할 수 있습니다. 이 프로젝트의 GcmSender 모듈은 이 샘플의 목적을 위해 서버를 에뮬레이션하지만 프로덕션 앱 서버의 예로 사용할 수 있는 것은 아닙니다. GCM 서버 구현에 대한 자세한 내용은 GCM 연결 서버 정보 참조 유효한 regID가 있는지 확인하는 것 외에도 앱이 등록 오류 TOO_MANY_REGISTRATIONS를 처리할 수 있도록 준비해야 합니다. 이 오류는 장치에 GCM에 등록된 앱이 너무 많음을 나타냅니다. 이 오류는 앱 수가 극단적인 경우에만 발생하므로 일반 사용자에게 영향을 주지 않아야 합니다. 해결 방법은 사용자가 새 앱에 대한 공간을 확보하기 위해 장치에서 다른 GCM 지원 앱 중 일부를 삭제하라는 메시지를 표시하는 것입니다. 등록 후 앱은 storeRegistrationId()를 호출하여 나중에 사용할 수 있도록 등록 ID를 공유 기본 설정에 저장합니다. 이것은 regID를 유지하는 한 가지 방법일 뿐입니다.

앱에서 다른 접근 방식을 사용하도록 선택할 수 있습니다: 위에서 설명한 것처럼 Android 앱은 GCM 서버에 등록하고 메시지를 받기 전에 등록 ID(regID)를 받아야 합니다. 지정된 regID가 무기한 지속되도록 보장되지 않으므로 앱에서 항상 수행해야 하는 첫 번째 일은 유효한 regID가 있는지 확인하는 것입니다(위의 코드 조각과 같이). 등록 토큰은 고유하고 안전합니다. 그러나 클라이언트 앱(또는 GCM)은 앱 재설치 또는 보안 문제가 발생할 경우 등록 토큰을 새로 고쳐야 할 수 있습니다. 이러한 이유로 GCM의 토큰 새로 고침 요청에 응답하는 InstanceIdListenerService를 구현해야 합니다. GCM 서버에 장치를 등록하면 등록Id를 반환합니다. GCM 등록Id는 모바일 장치를 식별하는 식별자입니다. 푸시 알림을 보내려면 서버에 저장해야 합니다. 유효한 기존 등록 ID가 없는 경우 데모액티비티는 등록할 다음 registerInBackground() 메서드를 호출합니다.

GCM 메서드 레지스터() 및 레지스터 취소()가 차단되므로 백그라운드 스레드에서 이 작업을 수행해야 합니다. 이 샘플에서는 AsyncTask를 사용하여 이 작업을 수행합니다: 인스턴스IdListenerService에 다음 특성을 사용하여 서비스가 시스템에서 인스턴스화되지 않고 GCM 등록 토큰(인스턴스 ID라고도 함)을 받을 수 있음을 나타냅니다. 요청: OnHandleIntent 먼저 GCM에서 등록 토큰을 요청 하는 Google의 InstanceID.GetToken 메서드를 호출 합니다. 여러 등록 의도가 동시에 발생할 가능성을 막기 위해 이 코드를 잠금에 래핑하여 이러한 의도가 순차적으로 처리되도록 합니다. 등록 토큰을 얻지 못하면 예외가 throw되고 오류를 기록합니다.