← すべての拡張機能

ネイティブ拡張機能

KlugDeviceId

com.klug.deviceid

APMは不要。ダウンロードしてすぐに使えます。これ以上シンプルにはできません。

Android と iOS の AIR アプリ向けに、システムから直接読み取る、デバイスごとの固定識別子を提供します。

iOSAndroid 本番稼働中 年額€19から · 購入

概要

多くのアプリはデバイスを認識する必要があります。トライアルやライセンスをデバイスに結び付けたり、アカウントあたりのデバイス数を制限したり、ユーザーがアプリを再インストールした後にデバイスを再び見つけたりするためです。KlugDeviceId は、オペレーティングシステムから固定の識別子を直接読み取ります。

Android では、アプリをアンインストールして再インストールしても識別子は変わらないため、再インストール耐性のあるアンカーになります。iOS では、同じ開発者のアプリがすべて削除されるとシステム識別子がリセットされます。iOS と macOS で再インストール耐性のあるアンカーが必要な場合は、KlugKeychain を使用してください。

KlugDeviceId は、実証の場である当社のアプリで毎日使われています。

機能

  • 自己完結型:ANE 1つで完結し、コアライブラリや依存 ANE の追加は不要
  • 1回の呼び出しで、Android と iOS のデバイス識別子を取得
  • Android 8.0 以降:同じ鍵で署名されている限り、アプリをアンインストールして再インストールしても変わらない
  • 権限は不要
  • 識別子が利用できない場合は、エラーではなく空文字列を返す

対応プラットフォーム

Android arm64 · armv7
iOS arm64

他のプラットフォームでは isSupported が false を返すため、同じコードをクロスプラットフォームのアプリにそのまま残せます。

はじめに

アプリケーション記述子に拡張機能を追加します:

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

コード例

3つの完全なフローです。ゲッターは即座に返り、権限は不要で、例外をスローすることもありません。識別子が利用できない場合は空文字列を返します。完全なドキュメント →

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。利用できない場合は空文字列。
androidIdAndroid のデバイス識別子のみで、アンインストールして再インストールしても変わりません。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)以降
権限なし