안드로이드

[Android] Android 10.0 Q 에서 시리얼넘버(Serialnumber)대체 키 SSAID(Settings.Secure.ANDROID_ID) 확인.

IT꿈나무 2021. 9. 29. 13:15
반응형

문제의 배경:

안드로이드를 식별하기 위한 단말기 식별번호로 사용하던, SerialNumber를 Android OS 10.0부터 사용 할수 없게 되었다.

관련내용:

  • 고유 식별자의 분류는 아래와 같다.(참고자료)
    1. 세션 전용: 사용자가 앱을 종료 후 다시 시작 하면, 식별자가 달라진다.
    2. 앱 설치 재설정: 앱을 삭제 하거나, 앱 데이터를 삭제하는 경우 식별자가 달라진다.
    3. 디바이스 재설정(Device Factory Reset): 디바이스를 초기화하는 경우 식별자가 달라진다.
    4. 디바이스 재설정 이후에도 동일: 식별자가 항상 동일 재설정할 수 없는(Non-resettable) 식별자 이다.

 

  • 기존에 단말기 고유 식별자로 사용하던 고유 식별자는 아래와 같았으나 Android 10.0이후 사용불가.
    1. TelephonyManager.getDeviceID(): null 반환
    2. TelephonyManager.getlmei(): null 반환
    3. TelephonyManager.getMeid(): null 반환
    4. Build.getSerial(): unknown 반환
    5. Build.SERIAL: unknown 반환
    6. 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

[고유 식별번호 권장사항] developer.android.com/training/articles/user-data-ids#best-practices-android-identifiers

[SSAID 변경사항] https://developer.android.com/about/versions/oreo/android-8.0-changes#privacy-all

반응형