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