2014. 08. 12.
어제 소공 회의 때 이번주까지 학사알림팝업 기능을 구현하기로 했다.
그래서 GCM 연습 겸 서울고 앱에 적용을 했다.
1. 사용된 언어, 프로그램
- 안드로이드 ( 자바 )
- php, mysql
- APM
2. 돌아가는 원리
1) 앱에서 서버로 스마트폰 id를 전송, 등록
2) 서버에서 구글 서버로 서버 키와 전송할 메시지, 보낼 주소 ( 즉 스마트폰 id 키)를 전송 (curl, json)
3) 구글 서버에서 스마트폰으로 gcm 을 쏴준다.
예를 들자면 앱을 실행하면 Main Activity 에서 서버로 reg_id 를 전송해주고
서버에서는 php 로 이 값을 받아서 mysql 에 저장해준다.
서버의 DB에 저장되있는 id 값을 바탕으로 메시지와 키와 id 값을 gcm 서버에 전달해주면
gcm 서버에서 이 내용들을 스마트폰에 뿌려주는 것이다.
3. 성공 짤
학사 정보 기능은 gcm 보다 먼저 하긴 했는데 아직 미완성이니깐 다음에 포스팅 해야지
4. 오늘의 뻘짓
1) 처음엔 php 버전이 낮아서 안되는줄 알고 telnet 을 활성화 시키고 putty 를 깔아서 curl 버전을 올리려고 했는데....
호스팅 서버라서 그런가 안되었다. ( 나중에 알고보니 내가 영어를 못하는 거였다. enable 을 지원안함으로 착각해서 이런 실수를,.....)
2) 퍼미션 설정할 때 com.example 로 되어 있는거 수정하는 거 깜박하고 안했다가 퍼미션 오류가 났다.... ( 근데 이건 로그보고 금방 고침)
3) 이게 제일 오래 걸린 망할 오류인데 sql 에서 데이터를 받아 올때 길이를 짧게 설정해서 reg_id 뒷부분이 다 짤린.... 그래서 자꾸 invalidRegistration 이라고 뜨더라....
처음 DB를 구성할 때 reg_id 100바이트만 줘도 되겠지 하고 100바이트 줬더니.... 뒷부분 다 짤려서 전송이 안되더라
이것 때문에 오만 별짓을 다하다가 설마 짧아서 그런가 하고 250바이트로 높여주니 바로 success....
4) TextView message; 에서 띄어쓰기 잘못해서 text Viewmessage 로 해놨던... 왜 자꾸 message에서 빨간줄이 뜨나 했다
5. 느낀점
예전에 C2DM 구현할 때보단 훨씬 쉬워진 것 같다.
( 길이 오류 때문에 오래 걸리긴 했지만....)
역시 이 분야에서는 성취감으로 살아가는 것 같다. ( 토할것 같이 안되다가 성공했을 때의 성취감은....)
이제 파싱 부분 해야 되는데 막막하다. 이정도?