내 Android 용 푸시 알림 메커니즘을 구현하고 있습니다.App engnine이있는 Python 서버의 푸시 알림
지금은 HTTP를 통해 GCM으로 푸시 알림을 보내고 android 클라이언트에서 successfuly 받기 위해 관리하는 것을보기 위해 작은 테스트를 실행하려고합니다.
클라이언트 코드는 정확히 구글의 튜토리얼과 같다 다음 messags을 처리하기위한 등록하거나 검색하기위한 책임이 DemoActivity라는 주요 활동이있다 이미 등록 ID를 존재 http://developer.android.com/google/gcm/client.html
, 2 개의 클래스 GcmIntentService 및 GcmBroadcastReceiver 책임 GCM 서버에서 앱으로 이동합니다.
물론 SENDER_ID를 올바르게 설정 했으므로 클라이언트 앱 등록 ID를 얻을 수 있습니다.
난 항상 다음과 같은 오류를받을 서버에서 : 서버에 대한 지금
은 보안상의 이유로url = "https://android.googleapis.com/gcm/send"
headers = { 'Content-Type' : 'application/json', 'Authorization': 'key=' + SERVER_API_KEY }
values = { 'registration_ids': [CLIENT_REGID]
, 'data': {'test': 'test} }
data = urllib.urlencode(values)
req = urllib2.Request(url, json.loads(values), headers)
response = urllib2.urlopen(req)
the_page = response.read()
self.response.out.write(the_page)
내가 서버를 생략 :
HTTP Error 401: Unauthorized
이 내 서버 코드 api 키와 클라이언트 등록 ID (하드 코딩 됨)가 있지만 이중 및 삼중 검사를하면 정확합니다. 또한 서버 API 키가 올바르게 구성되었는지 (자격 증명 -> 새 키 만들기 -> 서버 키) "모든 IP 허용"을 확인했습니다.
인터넷에서 발견 한 모든 해결책은 서버 API 또는 이와 유사한 내용의 실수와 관련이 있지만 이미 확인했습니다. 헬퍼에게 감사드립니다!
편집 :
은 헤더에 '키 ='를 추가했지만 지금은 잘못된 요청 오류받을 (HTTP 코드 400)
또 다른 편집 :
이 값은 ABIT 객체 및 보냈 변경 json.loads을 사용하지만 클라이언트에서이 오류가없는 (마침내! 서버에서 통지를 받으면에 의미) :
Unable to instantiate receiver GcmBroadcastReceiver
어떤 아이디어? 나는 샘플 프로젝트를 그대로 구글에서 복사 했으므로 여기에 무엇이 잘못되었는지 전혀 모른다.
당신이있는 경우 클라이언트의 문제, 클라이언트 코드 (매니 페스트, 브로드 캐스트 리시버)를 게시하십시오. – Eran