Android Device Unique Key 생성
조회수 2851회
앱 인스톨시 사용자 디바이스의 Behaviour를 추적하기 위해서 디바이스 아아디를 생성하려고 합니다.
여러 방법들이 있을 꺼 같은데, 현재 보통 사용중인 Device Unique Key를 생성하는 방법을 코드로 가이드 부탁드립니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
방법1
import android.provider.Settings.Secure; private String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID);
팩토리 리셋하면 번호가 바뀌는 등의 문제가 있었으나 안드로이드 최신버전으로 올수록 문제가 해결되서 위와 같이 하는걸 추천한다고 하네요.
방법2
Secure.ANDROID_ID
를 쓰면 최신폰에서는 잘 동작하는데 안드로이드 버전이 낮은 폰에서 문제가 생길 수 있어서 오래된 버전도 지원해야 하는 경우 다음 방법을 추천한다고 하네요.final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE); final String tmDevice, tmSerial, androidId; tmDevice = "" + tm.getDeviceId(); //null 이 나올수도 있습니다. tmSerial = "" + tm.getSimSerialNumber(); // uniq 를 보장하지 않아요. androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode()); String deviceId = deviceUuid.toString();
위와 같은 코드가 동작하려면 다음과 같은 퍼미션을 manifest파일에 추가해 주어야 합니다.
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
안드로이드 하드웨어에서 제공하는 값만으로는 고유한 값을 보장할 수 없기때문에 위처럼 만든후 어딘가에 저장해서 읽어오는 방식을 권합니다.
댓글 입력