티스토리 뷰
내가 처음 만든 GCM 써드파티 서버는 PHP로 만든 서버였다. (사실 서버라고 하기엔 민망한 것이 웹서버에다가 PHP 파일 하나 올려서 이용하던 서서버였다.) 당시 gcm 검색을 하면 대부분이 써드파티 서버를 PHP로 만들어 놓은 예제들이였기 때문이다. 그 후 Python으로 다시 만들려는 시도를 하긴 했었으나 잘 안되서 오늘에서야 진짜 Python으로 포팅을 하게 되었다.
gcm third party server python 뭐 이런식으로 검색을 하면 생각 밖으로 자료들이 잘 안 나온다. 내가 서버 쪽으로는 지식이 미비해서 그런 것일 수도 있지만.... 어쨌든 GCM 써드파티 서버에서 해줘야 할 것은 꽤 심플하기 때문에 원리를 잘 파악하기만 하면 어떤 언어로 만들든 상관 없다. 중요한 것은 HTTP Post에다 api key 같은 것들과 헤더, 그리고 정해진 형식에 맞게 JSON 데이터를 넣어주는 것이니깐. 내가 이 부분을 몰라서 헤맸었는데 결국 오늘 해낸 것이다! (고수분들에게는 식은 죽 먹기지만.)
소스는 아래와 같다.
import urllib2
import json
url = 'https://android.googleapis.com/gcm/send'
apiKey = 'AIza....' # 본인의 api key
myKey = "key=" + apiKey
regid = 'APA....' # 기기의 registration id
# make header
headers = {'Content-Type': 'application/json', 'Authorization': myKey}
# make json data
data = {}
data['registration_ids'] = (regid,)
data['data'] = {'data':'i love changong'}
json_dump = json.dumps(data)
# print json.dumps(data, indent=4)
req = urllib2.Request(url, json_dump, headers)
result = urllib2.urlopen(req).read()
print json.dumps(result)
api key나 registration id가 무엇인지는 당연히 알겠지? 보면 상당히 심플한 소스인 것을 알 수 있는데 테스트용으로 내 디바이스에 gcm 메세지가 잘 오는지 안 오는지만 확인하기 위한 소스이기 때문이다. 뭔가 변명하는 것 같지만.... 이걸 좀 더 범용적으로 사용하기 위해서는 소스 변경이 필요할 것이다. 특정 registration id을 찾는 작업, json data 부분에 본인이 원하는 형식으로 데이터를 넣는 작업 등 말이다.
'프로그래밍 > 잡탕' 카테고리의 다른 글
SQLAlchemy에서 데이터 변경사항 commit 되지 않도록 하기 (0) | 2014.12.21 |
---|---|
맥에서 CLion으로 OpenGL, GLUT 쓰기 (3) | 2014.10.24 |
Android NDK 이전 버전 받는 방법 (1) | 2013.11.03 |
Dive to game (0) | 2013.09.23 |
WinPcap API Documentation (0) | 2013.02.22 |
- Total
- Today
- Yesterday