← 모든 확장

네이티브 확장

KlugDeviceId

com.klug.deviceid

APM이 필요 없습니다. 다운로드해서 바로 사용하세요. 이보다 더 간단할 수 없습니다.

Android와 iOS의 AIR 앱을 위한, 시스템에서 직접 읽어 오는 기기별 안정적인 식별자입니다.

iOSAndroid 프로덕션 운영 중 연 €19부터 · 구매

개요

많은 앱이 기기를 인식해야 합니다. 체험판이나 라이선스를 기기에 묶거나, 계정당 기기 수를 제한하거나, 사용자가 앱을 재설치한 뒤 기기를 다시 찾기 위해서입니다. KlugDeviceId는 운영 체제에서 안정적인 식별자를 직접 읽습니다.

Android에서는 앱을 삭제했다가 다시 설치해도 식별자가 그대로 유지되므로 재설치 방지 앵커가 됩니다. iOS에서는 같은 개발자의 모든 앱이 제거되면 시스템 식별자가 초기화됩니다. iOS와 macOS에서 재설치 방지 앵커가 필요하면 KlugKeychain을 사용하세요.

KlugDeviceId는 개념 증명인 저희 앱에서 매일 사용되고 있습니다.

기능

  • 독립형: ANE 하나로 충분하며, 코어 라이브러리나 의존성 ANE를 추가할 필요가 없음
  • 한 번의 호출로 Android와 iOS의 기기 식별자 반환
  • Android 8.0 이상: 같은 키로 서명되어 있는 한, 앱을 삭제했다가 다시 설치해도 동일하게 유지됨
  • 권한 불필요
  • 식별자를 사용할 수 없는 곳에서는 오류 없이 빈 문자열 반환

지원 플랫폼

Android arm64 · armv7
iOS arm64

다른 플랫폼에서는 isSupported가 false를 반환하므로 동일한 코드를 크로스 플랫폼 앱에 그대로 둘 수 있습니다.

시작하기

애플리케이션 디스크립터에 확장을 추가합니다:

app.xml
<extensions>
    <extensionID>com.klug.deviceid</extensionID>
</extensions>

코드 예제

세 가지 완전한 흐름입니다. getter는 즉시 반환되고, 권한이 필요 없으며, 예외를 던지지 않습니다. 식별자를 사용할 수 없으면 빈 문자열을 반환합니다. 전체 문서 →

1 · 한 번 읽어서 로그인과 함께 전송
Login.as
import com.klug.deviceid.DeviceId;
import flash.events.Event;
import flash.net.*;

// read once at start and keep it: ANDROID_ID on Android, identifierForVendor on iOS
var deviceId:String = DeviceId.getInstance().uniqueId;

function login( user:String, password:String ):void
{
    var vars:URLVariables = new URLVariables();
    vars.user     = user;
    vars.password = password;
    vars.device   = deviceId;     // your server binds the licence or the push token to it

    var req:URLRequest = new URLRequest( "https://your.server/login" );
    req.method = URLRequestMethod.POST;
    req.data   = vars;

    var loader:URLLoader = new URLLoader();
    loader.addEventListener( Event.COMPLETE, onLoginResult );
    loader.load( req );
}
2 · 재설치 후에도 체험 유지 (Android)
Trial.as
var dev:DeviceId = DeviceId.getInstance();

// Android: ANDROID_ID stays the same after uninstall and reinstall; only a
// factory reset changes it. From Android 8 it is specific to your signing key.
var anchor:String = dev.androidId;

if ( anchor != "" )
    checkTrial( anchor );     // your server: has this device used the trial before?
else
    checkTrialOnIOS();        // iOS: androidId is always "" and identifierForVendor is
                              // reset on uninstall, use KlugKeychain as the anchor there
3 · 크로스 플랫폼 코드와 빈 값
Device.as
import flash.utils.setTimeout;

function readDeviceId():void
{
    var dev:DeviceId = DeviceId.getInstance();
    if ( !dev.isSupported )
    {
        useOwnDesktopId();        // desktop: isSupported is false, every getter returns ""
        return;
    }

    var id:String = dev.uniqueId;
    if ( id == "" )
        setTimeout( readDeviceId, 1000 );   // iOS can briefly have no value: ask again
    else
        onDeviceId( id );
}

API 개요

DeviceId.getInstance()단일 인스턴스를 반환합니다.
isSupportedAndroid와 iOS에서 true입니다.
uniqueId실행 중인 플랫폼의 기기 식별자: Android에서는 ANDROID_ID, iOS에서는 identifierForVendor이며, 사용할 수 없으면 빈 문자열입니다.
androidId삭제 후 재설치해도 유지되는 Android 기기 식별자만 반환하며, iOS와 다른 플랫폼에서는 빈 문자열입니다.

KlugDeviceId 구매

AIR 애플리케이션 1개에 대한 연간 라이선스이며 12개월간 모든 업데이트를 제공합니다. 결제 후 확장, ActionScript 라이브러리, 문서를 이메일로 보내 드리며, 보통 영업일 기준 1일 이내입니다. 라이선스 및 약관

심플
€19 / 년
  • AIR 애플리케이션 1개에 대한 라이선스
  • 12개월간 모든 업데이트
  • 지원 없음
심플 구매
스탠더드
€149 / 년
  • AIR 애플리케이션 1개에 대한 라이선스
  • 12개월간 모든 업데이트
  • 7일 이내 이메일 답변
스탠더드 구매
프라이어리티
€299 / 년
  • AIR 애플리케이션 1개에 대한 라이선스
  • 12개월간 모든 업데이트
  • 48시간 이내 이메일 답변
프라이어리티 구매
세금은 Link(Stripe)가 결제 시 계산합니다. 결제 중에 AIR 앱의 애플리케이션 ID를 입력합니다.

요구 사항

AIR SDK51.x (HARMAN)
iOSiOS 17 이상
AndroidAndroid 6.0 (API 23) 이상
권한없음