posted by Kyleslab 2012. 10. 30. 20:45

- nPush


- Subscribe()시 npushService를 통해서 tagetId를 받는데 자체내에서 생성한다. 한 기기당 고유 ID를 생성하게 되고 그 ID앞에 각각 nhn앱들의 패키지명을 붙여 실제 targetId를 생성한다.


- 자체 생성인데 서비스로 돌리는 이유는 이것이 여러 nhn앱들을 깔아도 실행되는 서비스는 하나로 유지하기 위함이다.


- permission이  protectionLevel:signature로 설정되어있는 것은 이 퍼미션은 한가지의 시그니쳐로 서명된 앱들끼리만 사용할 수 있다는 말이된다. 이미 한가지 서명으로 이 퍼미션을 사용하는 앱이 있다면 다른 서명을 가졌지만 같은 퍼미션을 사용하는 앱은 이 퍼미션을 사용할 수 없게된다. 그러므로 이 퍼미션을 사용하는 시그니쳐로 된 앱들을 다죽여야지만 다른 시그니쳐로 서명된(예로 디버그 시그니쳐) 앱이 이 퍼미션을 사용할 수 있게 된다.


- <intent-filter android:priority="13"

priority는 이 인텐트 필터에 대한 인텐트를 받게 된다. 브로드캐스트 리시버의 경우는 우선순위에 따라 차례대로 모든 리시버의 onReceive를 실행하게 되지만 서비스는 최상위 priority를 가진 서비스 하나만 실행하게 된다. 그래서 새로 만든 npush라이브러리를 적용할때 이 priority를 하나씩 증가하게 된다면 nhn앱들중에 이 최신 npush라이브러리를 사용한 어플이 하나만 있어도 모든 nhn앱들이 그것이 적용되는 것이다. 


android:process="com.nhn.android.npush" 

서비스가 실행될 때의 서비스의 이름이 된다. 그러므로 어느 nhn앱이던지 다른 nhn앱이 실행하고 있는 이 서비스를 찾아갈 수 있게 된다. 이 프로세스이름을 통일해줌으로써 글로벌 서비스가 되는 것이다.  nhn앱마다 npush서비스가 탑재되어있어서 자신이 startService할경우 중복으로 서비스를 실행하는 것이 아니라 안드로이드 시스템자체에서 이미 실행중이라는 것을 알아차리고 기존 서비스에 인텐트만 전달해주게 된다.


- android:exported="true"

다른 어플리케이션에서 이 서비스를 실행시킬수 있게 된다. 이 값은 설정하지 않아도 서비스가  인텐트 필터를 갖는다면 관련된 인턴트는 실행시킬수 있다.


- npush test App으로 npush service를 돌렸을 경우는 어느 서버에 물리느냐에 따라 푸시가 오는지 안오는지 결정된다.


- targetID등을 갖는 것은 Sharedpreference이다. 여러 앱에서 공유해서 사용하게 하기 위함이다.


- 자신이 아닌 다른 앱이 이 서비스를 실행하고 있는 경우에 이 서비스와의 정보교환은 모두 인텐트로 이루어진다.




android:name
The name of the class that implements the broadcast receiver



android:permission
The name of a permission that broadcasters must have to send a message to the broadcast receiver.

결국 리시버나 서비스나 이 옵션을 가진 송신자(인텐트)만이 이 리시버나 서비스를 실행시킬수 있게된다. 브로드캐스트 같은 경우는 sendBroadcast(intent, receiverPermission) 여기에서 퍼미션을 설정하여 보내게 되고 서비스는 매니페스트 파일의 use-permission 옵션을 가진 앱에서만 사용이 가능하다.



- receiver 의 permission

receiver 가 permission 값을 가지고 있으면, sendBroadcast 를 하는 쪽에서 permission 이 필요합니다. 보내는 쪽에서 permission 을 주지 않고 해당 broadcast intent 를 날리면, broadcast 가 받아지지 않습니다. 만약 Application tag 쪽에 permission 을 가지고 있고, receiver 쪽에는 기술되어 있지 않다면, receiver 는 application 의 permission 을 상속합니다.
센더의 매니페스트 파일에 use-permission으로 작성하고 인텐트로 서비스나 브로드캐스트리시버를 실행하면 인텐트에 퍼미션을 같이 실어서 보내는 건가? 아니면 인텐트를 쏜앱을 찾아서 퍼미션을 검사하는 것인가?


- NNI subscribe시
알림을 받고자 등록시에 호출한다.
NPushMessaging.requestSubscribe(context, "naverapp"); targetId를 만들때 조합할 서비스명이 된다. 호출후 브로드캐스트리시버로 타겟아이디를 전달받는다.

- GCM은 NPush서비스와는 별개로 자신의 서비스로 돌게된다 레지스터 요청, 메시지 받는것 등등




'Mobile > Android' 카테고리의 다른 글

한 앱에서 라이브러리와 값 공유  (0) 2012.11.02
BroadcastReceiver  (0) 2012.11.02
TweenAnimation  (0) 2012.09.24
AsyncTask  (0) 2012.09.21
Context  (0) 2012.09.21