내 앱에는 현재 C2DM을 사용하는 배경 서비스가 있습니다. GCM으로 이전하고 싶습니다.백그라운드 서비스를 위해 C2DM에서 GCM으로 이전
나에게 가능한 2 GCM 구현이 있습니다
1 : gcm.jar를 사용하고
2 발신자 ID로 C2DM 이메일 주소를 대체 : Google은 서비스 및 GCM에 등록 할 수있는 GoogleCloudMessaging 클래스를 재생 사용
위의 옵션 1은 C2DM에서 GCM으로의 가장 간단한 마이그레이션 경로를 제공하지만 gcm.jar는 더 이상 사용되지 않습니다. 따라서 비 추천 푸시 메커니즘 (C2DM)을 다른 것으로 변경하려고합니다 (gcm.jar를 사용하는 GCM)
옵션 2를 사용하려면 등록하기 전에 기기에서 GooglePlayServices가 최신인지 확인해야합니다. GCM. GooglePlayServicesUtil.getErrorDialog() API를 호출하여 Google Play 서비스를 사용할 수 있도록 설정할 수 있습니다. 그러나 백그라운드 서비스에서이 API를 호출 할 수는 없으므로 백그라운드 서비스에서 수행해서는 안되는 화면이 사용자에게 표시 될 수 있습니다.
현재 Android 클라이언트에서 C2DM 및 GCM (Google Play 서비스 사용)이 활성화되어 있습니다. GCM 만 활성화하고 C2DM을 삭제하는 것을 선호하지만 Google Play 서비스가 기기에서 사용할 준비가되지 않은 경우 GCM을 사용할 수 없습니다. 이제 백그라운드 서비스가 GCM에 등록되지 않은 상황이 발생할 수 있으며 계속해서 C2DM을 사용했다면 등록되었을 것입니다.
질문 :
1 : 구글은 백그라운드 서비스에 대한 C2DM-> GCM에 대한 마이그레이션 경로를 권장하는 것입니다. gcm.jar 접근법을 사용해야합니까?
2 : Google Play 서비스를 현재 기기에서 사용할 수없는 경우 GooglePlayServicesUtil.getErrorDialog()를 호출하는 대신 C2DM을 사용하도록 전환해야합니까?
3 : 클라이언트에서 C2DM과 GCM을 모두 사용하는 것은 만족스럽지 않습니다. GoogleCloudMessaging.register (senderId)를 사용하여 GCM에 등록하면 내 C2DM 수신기에서 가져온 com.google.android.c2dm.intent.REGISTRATION 메시지가 브로드 캐스트됩니다. 메시지가 C2DM 등록 메시지인지 또는 GCM 등록 메시지인지 알 수 없습니다. 2 가지 등록 메시지를 구별 할 수있는 방법이 있습니까? GoogleCloudMessaging.register()가 등록 ID를 반환하지만 com.google.android.c2dm.intent.REGISTRATION 메시지가 불필요하게 보이고 실제 C2DM 수신기를 혼란스럽게 만드는 결과를 낳습니다.
내 문제에 대한 조언/통찰력을 환영합니다. Google Play 서비스 관련 문서는 약간 빛나는 것처럼 보이고 백그라운드 서비스에서의 사용을 다루지 않습니다.
종류는
답장을 보내 주셔서 감사합니다. 이 마이그레이션 예는 Google Play 서비스가 아닌 gcm.jar을 사용하는 GCM입니다. 내 백그라운드 서비스에서 GCM의이 형식을 사용할 수 있지만 사용 중지됨을 알고 있습니다. Google Play 서비스로 이전하는 방법을 궁금합니다. 아마도 getErrorDialog()를 호출하여 사용자가 사용 설정을 안내 할 수 없기 때문에 백그라운드 서비스에서 100 % Google Play 서비스를 사용할 수 없을 수도 있습니다. – user3018303
서버에서 gcm.jar을 사용하지 않습니다. PHP 내부에서 Curl과 함께 원시 HTTP 요청을 사용하고 있습니다. HTTP 프로토콜은 간단합니다. –