본문 바로가기

프로그래밍/iOS

iOS 식별자(identifier)

  1. iOS 기기 식별자(UDID: Unique Device Identifier)
    - iOS에서 기존에 사용하던 UDID가 iOS5에서 deprecated 됨.
    - 따라서 UUID(Universally Unique Identifier) 기반의 다른 식별자로 대체하여 사용
    - 대표적으로 identifierForVendor(벤더식별자), advertisingIdentifier(광고식별자)가 있음.
    32개의 문자+숫자로 이루어 짐(ex: E621E1F8-C36C-495A-93FC-0C247A3E6E5F)


  2. identifierForVender(벤더식별자)
    - 공급업체(벤더)가 같은 앱들은 모두 같은 고유 ID를 가짐

    - 앱을 삭제할 경우
       1) 같은 벤더의 다른 앱이 설치되어 있는 경우 ID가 유지됨.
       2) 같은 벤더의 다른 앱이 없을 경우 ID는 초기화 됨.

    - 스토어에 제출하지 않은 앱에 대해서는 bundle ID로 구별
  3.  bundle ID

    iOS 6 

    iOS 7 

       com.test.app1 

       com.test.app1 

       com.test.app1 

       com.test.app2

       com.test.app2

       com.test.app2

       com.test.example.app1

       com.test.example.app1

       com.test.example.app1

       com.test.example.app2

       com.test.example.app2

       com.test.example.app2

       example 

       example

       example

    <표1. iOS 버전 별 vendor 인식 범위>


    - nil 출력 시 기다렸다가 다시 호출해야 함(기기 재시작 후 잠금을 풀기 전에 발생할 수 있음, 위젯의 경우?)

    - 사용 방법
    NSString *vendorID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    


  4. advertisingIdentifier(광고식별자)
    - 각 기기마다 가지는 고유한 ID를 가짐

    - 앱의 삭제 여부와 관계없이 같은 ID를 가짐

    - 설정에 따라 값이 초기화 됨(변경)
       1) 설정  일반 → 재설정 → 모든 → 설정 → 재설정
       2) 설정 → 개인 정보 보호 → 광고 → 광고 식별자 재설정

    - 설정에 따라 값을 가지고 올 수 없음
       1) 설정 → 개인 정보 보호 → 광고 → 광고 추적 제한

    - 사용 방법
    // AdSupport.framework 추가
    // import AdSupport.h
    NSString *adID = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    

    - 추가 사항
       1) App 심사 승인을 위해
     IDFA(광고식별자) 사용 정보 관련 질문에 답해야 함(Reject 당할 수 있음)
       2) 관련 링크: https://support.appsflyer.com/hc/ko/articles/207101226


  5. 결론
    - 두 식별자 모두 영구적으로 사용할 수 없기 대문에 다른 기능과 함께 적용해야 할 필요가 있음
       1) keyChain 및 NSUserDefaults와 같은 내부 저장소 사용
       2) 광고 추적 제한 설정에 따라 광고식별자 및 벤더식별자 유연하게 사용


'프로그래밍 > iOS' 카테고리의 다른 글

NSHashTable  (0) 2017.04.11
NSAutoreleasePool VS @autorelease block  (0) 2017.04.10
NSURL의 속성  (0) 2017.04.07
nil, Nil, null, NSNull의 차이  (0) 2017.04.06
new VS alloc init  (2) 2017.04.05