Secure Android ID
1
val androidId = Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)
디바이스가 최초 부팅 시에 생성됨
초기화 전까지는 삭제 되지 않고 저장되어 있어 디바이스 식별에 유용
기기를 초기화하면 값이 바뀜
READ_PHONE_STATE 권한 필요
Serial Number
1
val serial = android.os.Build.SERIAL
안드로이드 2.3부터 사용 가능
전화 기능이 없는 디바이스의 경우 유일한 값을 반환하지만, 전화 기능이 있는 디바이스의 경우 모든 디바이스가 해당되지는 않음
Mac Address
디바이스를 구분할 수 있는 값이지만, 모든 디바이스가 Mac Address를 가지고 있지 않음
디바이스가 꺼져 있는 경우 값을 얻어오지 못함
와이파이를 끄고 재부팅하면 안 나옴
Telephony Manager
1
2
3
4
5
6
7
if (Build.VERSION.SDK_INT >= 29 || checkTableDevice()) {
return Settings.Secure.getString(this.contentResolver, Settings.Secure.ANDROID_ID)
} else {
return (getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager).deviceId
}
// 기존에 TelephonyManager를 사용하면서 최신버전은 Secure Android ID로 식별자 사용하는 방법
Secure Android ID는 최신폰에서는 잘 동작하는데 버전이 낮거나 오래된 버전에서 문제가 생길 수 있음
Non-Phone : 번호를 갖고 있지 않은 태블릿 또는 와이파이만을 제공하는 디바이스는 device id를 획득하지 못할 수도 있음
Persistence : 한번 생성된 번호에 대한 지속 여부를 보장할 수 없음(공장 초기화)
UUID
Universally Unique Identifier(범용 고유 식별자)
완벽한 고유성을 지니진 못하지만 16바이트로 이루어졌기 때문에 동일한 UUID가 나오게 될 확률은 로또에 당첨될 확률보다 낮음
키를 저장해 두고 활용하면, 캐시 삭제/어플 삭제 이전에는 동일한 식별번호로 유지
1
안드로이드 Q(10) 버전부터는 더 이상 '사용자가 재설정할 수 없는' 디바이스 식별자를 제공하지 않습니다.
안드로이드 공식 문서에서 추천하는 방법들
하드웨어 기기 식별자를 사용하지 않기를 추천 (SSAID는 디바이스를 초기화하지 않는 이상 값이 변하지 않아 사용자에게 불편함을 줄 수 있음)
광고 사례에는 Advertising ID 추천 (광고 사례가 아닌 경우 식별자로 사용하면 안되며, 사용자가 재설정하면 값이 변할 수 있음)
기타 사례에는 Instance ID(FirebaseInstance ID) 또는 GUID 추천 (앱을 삭제하거나 재설치 또는 앱 데이터를 삭제할 경우 값이 변할 수 있음)
개인 정보 위험이 적은 DRM API, SafetyNet API 추천 (MediaDRM - 프리미엄 컨텐츠를 안전하게 재생하기 위해 MediaCodec에 암호화 키를 안전하게 제공할 수 있도록 하는 안드로이드 프레임워크 API, SafetyNet API - 소프트웨어와 하드웨어 정보를 분석한 후 무결성을 확인하는 API, 가장 안전하지만 과정이 복잡하고 시간이 오래 걸림)
MediaDrm 모듈 중 하나인 Widevine 모듈 (구글에서 제공하는 모듈, 4.3 버전 이상의 ExoPlayer에서 사용)
범위 | 수명(변경) | |
---|---|---|
InstancelID FirebaseInstancelID | 단일 앱 | 디바이스 초기화 광고 ID 초기화 (구글 설정) |
GUID | 단일 앱 앱 그룹(직접 구현 필요) | 앱삭제 및 재설치 앱 데이터 삭제 |
광고 ID | 디바이스 | 디바이스 초기화 광고 ID 초기화 (구글 설정) |
SSAID | 앱 그룹(안드로이드8.0 이상, 동일한 서명키로 서명된 경우) 디바이스 (안드로이드 8.0 미만) | 디바이스 초기화 |
참고
- https://yoon-dailylife.tistory.com/94