티스토리 뷰

내가 처음 만든 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 부분에 본인이 원하는 형식으로 데이터를 넣는 작업 등 말이다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday