- iOS 기기 식별자(UDID: Unique Device Identifier)
- iOS에서 기존에 사용하던 UDID가 iOS5에서 deprecated 됨.
- 따라서 UUID(Universally Unique Identifier) 기반의 다른 식별자로 대체하여 사용
- 대표적으로 identifierForVendor(벤더식별자), advertisingIdentifier(광고식별자)가 있음.
- 32개의 문자+숫자로 이루어 짐(ex: E621E1F8-C36C-495A-93FC-0C247A3E6E5F) - identifierForVender(벤더식별자)
- 공급업체(벤더)가 같은 앱들은 모두 같은 고유 ID를 가짐
- 앱을 삭제할 경우
1) 같은 벤더의 다른 앱이 설치되어 있는 경우 ID가 유지됨.
2) 같은 벤더의 다른 앱이 없을 경우 ID는 초기화 됨.
- 스토어에 제출하지 않은 앱에 대해서는 bundle ID로 구별 - 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 - 결론
- 두 식별자 모두 영구적으로 사용할 수 없기 대문에 다른 기능과 함께 적용해야 할 필요가 있음
1) keyChain 및 NSUserDefaults와 같은 내부 저장소 사용
2) 광고 추적 제한 설정에 따라 광고식별자 및 벤더식별자 유연하게 사용
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];
'프로그래밍 > 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 |