반응형
문제의 배경:
안드로이드를 식별하기 위한 단말기 식별번호로 사용하던, SerialNumber를 Android OS 10.0부터 사용 할수 없게 되었다.
관련내용:
- 고유 식별자의 분류는 아래와 같다.(참고자료)
- 세션 전용: 사용자가 앱을 종료 후 다시 시작 하면, 식별자가 달라진다.
- 앱 설치 재설정: 앱을 삭제 하거나, 앱 데이터를 삭제하는 경우 식별자가 달라진다.
- 디바이스 재설정(Device Factory Reset): 디바이스를 초기화하는 경우 식별자가 달라진다.
- 디바이스 재설정 이후에도 동일: 식별자가 항상 동일 재설정할 수 없는(Non-resettable) 식별자 이다.
- 기존에 단말기 고유 식별자로 사용하던 고유 식별자는 아래와 같았으나 Android 10.0이후 사용불가.
- TelephonyManager.getDeviceID(): null 반환
- TelephonyManager.getlmei(): null 반환
- TelephonyManager.getMeid(): null 반환
- Build.getSerial(): unknown 반환
- Build.SERIAL: unknown 반환
- WifiInfo.getMacAddres(): 02:00:00:00:00:00 반환
권장사항:
Android Q(10.0) 이후 사용할 수 있는 대체 고유 식별자의 종류를 확인 한다.(참고자료)
- 인스턴스 ID, GUID:로그 아웃한 사용자 환경 설정 추적
- SSAID동일한 서명 키가 있는 앱 간에 로그아웃한 사용자 환경 설정 추적
서버에 기기별 상태가 저장되며 동일한 기기에 동일한 키로 서명된 서로 다른 앱 간에 이상태로 전송하고 있는 경우.
(디바이스 재설정 키로 사용가능) 리셋 할경우 초기화 되지만 OTA 업데이트로 변경되지 않음.
적용방안:
나는 SSAID를 이용하고, 회사 내의 앱들은 동일한 개발자 key를 이용하여 빌드하여, 동일한 SSAID를 받고 공장초기화 할경우에만 변경되는 키인 SSAID를 사용한다.
String android_id =
Settings.Secure.getString(getApplicationContext().getContentResolver(),
Settings.Secure.ANDROID_ID);
참고자료:
[안드로이드 Q식별번호 관련 블러그] brunch.co.kr/@huewu/9
[SSAID 변경사항] https://developer.android.com/about/versions/oreo/android-8.0-changes#privacy-all
반응형
'안드로이드' 카테고리의 다른 글
[안드로이드] 다른 앱으로 브로드캐스트 리시버 명시적 호출 및 정지 된앱 깨우기 (0) | 2021.09.29 |
---|---|
[안드로이드] ADB를 제어하여, pc에서 안드로이드 단말기로 앱을 배포 제어하기. (0) | 2021.09.29 |
[Android] 화면 캡처 방지 (0) | 2021.09.29 |
[Android] 안드로이드 스플레시 구현 (0) | 2021.09.23 |
[Android] 터미널 빌드 명령어 (0) | 2021.09.23 |