구글 가이드를 보고 무작정 따라하다 보면 애로 사항이 여럿 꽃핀다.

 

첫째로

Step 1: Copy the gcm.jar file into your application classpath

자신의 프로젝트 최상위 폴더에 (src, assets, bin 등과 동일한 레벨의) libs폴더에 jar 파일을 복사한다. (없는 경우 폴더 생성)

그리고 프로젝트 속성으로 들어가 Java Build Path > Libararies 로 가서 Add External JARs... 에서 추가한 파일을 또 추가한다.

(솔직히 이 짓을 왜 또 하는지 모르겠다. 같은 일 두 번 해야하는 느낌..)

 

둘째로 안드로이드 입문자들을 놀래킨 AndroidManifest.xml 에 코드 추가하는 위치..

<uses-sdk ... />, <permission .. />, <uses-permission ... /> 은

<manifest ... > 와 </manifest> 사이에,

 

<receiver ... > ... </receiver>, <service ... > 는

<application ... > 와 </application> 사이에 넣는다. (<activity ... > </activity> 와 동일 레벨)

 

셋째로 MultiResult ...

디컴파일러로 훑어보면 금방 알겠지만 Result를 상속받은 놈이 아니고

Result 클래스는 단일 대상용, MultiResult 클래스는 다중 대상용이다.

따라서 Sender의 send 함수 인자로 넘어가는 device 인자가

Result는 String이고, MultiResult는 List이다.

MultiResult 와 Result는 Canonical reg id를 받는 함수, error 코드를 받는 함수 이름 등이 다르므로,

주의해서 사용하도록 한다.

물론 실전에서 Result를 사용할 일은 거의 없을듯..

 

마지막으로 푸쉬가 온데 대한 처리..

가이드에서 생성한 별도의 클래스인 GCMIntentService의 onMessage 함수를 오버라이딩하는데서 처리한다.

한가지 조심할 것은 UI thread(Main thread)가 아니기 때문에 Context를 받아 바로 메인 UI를 건드리지 말도록 하자.

간단하게 Message/Handler를 사용하면 될 것이다.

(Context는 따로 인자로 받기보다는 getApplicationContext() 함수로 app context를 받아온다)

 

인자를 안보고 빨리만 하려고 했더니 이런 실수도 하게된다는게 두려웠던 삽질의 시간이었음.

'Android' 카테고리의 다른 글

Android GestureDetector  (0) 2012.10.18
Adjusting Touch Area  (0) 2012.10.16
Custom dialog 위치/크기 변경하기  (1) 2012.09.26
Avoding memory leaks  (0) 2012.09.10
onCreateDialog/onPrepareDialog  (8) 2012.09.06
Posted by 독뽀
,