MongoDB 와 Parse server 를 구축하였으므로 실제로 메시지를 보내 푸시가 정상적으로 보내지는지 확인한다.
Parse DB 에는 이미 device 데이터들이 업로드 되어 있다고 가정한다 ^^ 없는 사람들은 installation 활용하여 데이터 업로드.
아래는 appId 와 masterKey 등을 헤더에 넣어 POST 요청으로 android 와 ios 사용자 모두에게 메시지를 보내는 쿼리를 보내는 예제이다.
1. Configure Client Apps
앱 개발자들에게 아래의 링크를 주고 설정하라고 말한다ㅋ
IOS - http://parse.com/apps/quickstart#parse_data/mobile/ios
Android - http://parse.com/apps/quickstart#parse_data/mobile/android
간단히 설명하자면,
해당 개발 언어의 최신 Parse SDK 를 다운받아 추가하고, AppId 와 Parse server 를 세팅하여 해당 앱에서 Parse 서버에 연결할 수 있게 한다.
2. Push Test
$ curl -X POST \ -H "X-Parse-Application-Id: you_app_id" \ -H "X-Parse-Master-Key: your_master_key" \ -H "Content-Type: application/json" \ -d '{ "where": { "deviceType": { "$in": [ "ios", "android" ] } }, "data": { "title": "The Shining", "alert": "All work and no play makes Jack a dull boy." } }'\ http://your_server_address/parse/push | cs |
요청에 문제가 없다면 JSON 방식의 응답 {"result":true} 를 전달받을 것이고, 문제가 있다면 error code 와 에러 내용이 출력된다.
{"result":true} 가 출력되었다면 Parse 서버에는 다음과 유사한 로그가 기록된다.
GCM request and response {"request":{"params":{"priority":"normal","data":{"time":"2016-02-10T03:21:59.065Z","push_id":"NTDgWw7kp8","data":"{\"alert\":\"All work and no play makes Jack a dull boy.\"}"}}},"response":{"multicast_id":5318039027588186000,"success":1,"failure":0,"canonical_ids":0,"results":[{"registration_id":"APA91bEdLpZnXT76vpkvkD7uWXEAgfrZgkiH_ybkzXqhaNcRw1KHOY0s9GUKNgneGxe2PqJ5Swk1-Vf852kpHAP0Mhoj5wd1MVXpRsRr_3KTQo_dkNd_5wcQ__yWnWLxbeM3kg_JziJK","message_id":"0:1455074519347821%df0f8ea7f9fd7ecd"}]}} APNS Connected APNS Notification transmitted to:7a7d2864598e1f65e6e02135245b7daf8ea510514e6376f072dc29d53facaa41 | cs |
3. Troubleshooting
만약 위 예제처럼 테스트를 했는데 푸시가 정상적으로 전달되지 않았다면 다음 사항들을 순서대로 확인한다.
- PUSH 요청시 {"result":true} 가 출력되지 않았다면, AppId, MasterKey, 요청 타입, 쿼리를 다시 한번 확인한다.
- 요청 URL (http://your_server_address:port/parse/push) 이 올바르지 않거나 포트가 막혀 있거나 parse-server 데몬이 running 상태가 아니라면 응답이 오지 않을 수도 있다.
- parse-server 데몬 상태 확인 : $ ps ax | grep parse
- PUSH 요청시 {"result":true} 가 출력되었다면, 그 다음 처리 로그는 parse-server 에서 확인할 수 있다.
- Parse 서버 로그에서 (예, GCM request and response {"request"... ) "response" 가 없다면 configuration.json 파일에 값이 올바른지 체크한다.
- "response" 는 있지만 푸시 상태가 fail 이라면 보통 {"error":"MismatchSenderId"} 이란 메시지를 볼 수 있는데, 클라이언트 앱 설정을 확인한다.