Android Application Components (MVC)

android components

1. Intent
Component에 Action, Data 등을 전달하는 메시지 객체
일반적으로 다음 세 가지 종류로 요약된다

  • Activity 시작
  • Service 시작
  • Broadcast 전달

2. Activity
사용자 인터페이스 화면을 관리하는 Component

  • 안드로이드 애플리케이션은 반드시 하나의 Activity를 가져야 함
  • 각 액티비티는 매니페스트 파일에 등록되어 있어야 함
  • Activity의 크기는 Status Bar 영역을 제외한 화면 전체로 고정 (원하는 위치에 원하는 크기로 변경할 수 없음)
  • 2개의 Activity를 동시에 보여줄 수 없음
  • 다른 애플리케이션의 Activity를 불러낼 수 있음
  • 하나 이상의 View를 가질 수 있음 (Activity 내에는 Fragment를 추가하여 화면을 분할하여 별도로 조작 가능)

3. Service
특정 Activity와 상관 없이 백그라운드에서 실행되는 Component

  • UI 없음 (화면 구성 레이아웃 작성 불필요)
  • 한번 시작된 Service는 애플리케이션이 종료되고 다른 애플리케이션으로 이동해도 계속 백그라운드에서 실행됨
  • 모든 Service는 Service 클래스를 상속받아서 작성됨
  • 네트워크를 통하여 데이터를 꺼내올 수 있음

4. BroadcastReceiver
특정 브로드캐스트에 반응하는 Component

  • 일반적으로 UI 없음
  • 단말기에서 발생하는 일 중에서 어플리케이션이 알아야 하는 상황이 발생하면 방송을 해줌
  • BroadcastReceiver를 통해 상황을 감지하고 적절한 작업을 수행함
  • 10초 이내의 작업만을 보증하므로 오랜 시간 동작해야 한다면 별도의 스레드로 처리하거나 서비스에 구현해야 함

5. Content Provider
애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공하는 Component (URI 사용하여 CRUD 가능)

  • 데이터는 파일 시스템이나 SQLite 데이터베이스, 웹상에 저장 가능
  • 콘텐트 제공자를 통해서 다른 애플리케이션의 데이터를 쿼리하거나 변경 가능

 

MVC 모델 외에 MVP, MVVM 등 모델에 대해서는 차후 글에서 다루도록 하겠음

 

 

출처
https://developer.android.com/guide/components/
https://kairo96.gitbooks.io/android/content/
http://ggodol.tistory.com/

p12로 pem 생성 시 private key 오류

오류

APNs에서 오류가 반환되었습니다. APNs이(가) 푸시 통지를 전달하도록 수락하지 않았습니다.

오류 상태 코드: null 
오류 사유 – Pem file Parse failed for the ApiKey: ********************** account id:****** because of unrecognized private key delimiter found in pem file.
 

원인

p12 file로 pem file 생성했을 때
pem file 내  RSA 키 없음

 

해결 방법 (Windows cmd)

  1. cd C:\openssl-0.9.8k_X64\bin
  2. C:\openssl-0.9.8k_X64\bin>openssl.exe
  3. OpenSSL> pkcs12 -in ‘p12 저장경로’\’p12 파일명’.p12 -out ‘pem 파일명’.pem -nodes -clcerts
  4. Enter Import Password: ‘비밀번호 입력’
  5. MAC verified OK
  6. OpenSSL> rsa -in ‘pem 파일명’.pem -out ‘rsa 파일명’.pem
  7. writing RSA key
  8. ‘pem 파일명’.pem 을 텍스트 에디터로 수정
  9. —–BEGIN RSA PRIVATE KEY—– ~
    —–END RSA PRIVATE KEY—– 내 암호문을 ‘rsa 파일명’.pem의 암호문으로 교체
  10. ‘pem 파일명’.pem 저장 및 iOS APNS 재업로드

 

출처: https://github.com/pusher/libPusher/issues/257

IMSI (International Mobile Subscriber Identity)

IMSI 개요

국제 모바일 가입자 식별자 (International Mobile Subscriber Identity) 또는 IMSI
ITU-T(국제전기통신연합 전기통신표준화부문)의 E.212 표준을 따름.

이동통신 네트워크에서 사용자를 구별하는데 사용되는 유일한 64bit 필드 구분자.
해당 IMSI 번호는 인터페이스에 따라 SIM 카드, R-UIM 카드, 전화기에 저장됨.

구성

MCC (Mobile Country Code) : 모바일 국가 코드 (3자리)

MNC (Mobile Network Code) : 모바일 네트워크 코드 (2 또는 3자리)
*한국 2자리

MSIN (Mobile Subscriber Identifier Number) : 모바일 가입자 식별 번호 (휴대폰 전화번호)

IMSI 숫자 표시의 예

IMSI:4500510123456789
MCC 450 대한민국
MNC 05 SK Telecom
MSIN 1012346789

분류 (대한민국)

MCC MNC Brand Operator Status Bands (MHz) References and notes
450 01 Globalstar Asia Pacific Operational Satellite [10]
450 02 KT KT Unknown 5G Test network;[10] former Hansol PCS (CDMA2000 1800), Merged with KT in 2002
450 03 Power 017 Shinsegi Telecom, Inc. Not operational CDMA2000 800 Merged with SK Telecom in 2002; MNC withdrawn[10]
450 04 KT KT Unknown Unknown IoT network;[10] former CDMA2000 1800
450 05 SKTelecom SK Telecom Operational CDMA2000 800 / UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100 / LTE 2600
450 06 LG U+ LG Telecom Operational CDMA2000 1800 / LTE 850 / LTE 2100 / LTE 2600
450 07 KT KT Unknown Unknown [10]
450 08 olleh KT Operational UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100
450 11 Korea Cable Telecom Operational MVNO MVNO of SK Telecom
450 12 SKTelecom SK Telecom Unknown Unknown IoT network[10]

 

MSISDN 비교

구분 IMSI MSIDN
표준 E.212 E.164
적용 영역 모바일 네트워크 공중교환전화망 (PSTN, public switched telephone network)
구성 IMSI = MCC + MNC + MSIN  MSISDN = CC + NDC + SN
450-05-10123456789 +82-02-12345678

cf.
MSISDN : Mobile Station International Subscriber Directory Number
CC : Country Code
NDC : National Destination Code
SN : Subscriber Number)

출처:
https://en.wikipedia.org/wiki/Mobile_country_code#K
https://ko.wikipedia.org/wiki/국제_모바일_가입자_구별자