Android Device Unique Key 생성

조회수 2769회

앱 인스톨시 사용자 디바이스의 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" />
    

    안드로이드 하드웨어에서 제공하는 값만으로는 고유한 값을 보장할 수 없기때문에 위처럼 만든후 어딘가에 저장해서 읽어오는 방식을 권합니다.

    출처

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)