← Все расширения

Нативное расширение

KlugDeviceId

com.klug.deviceid

APM НЕ НУЖЕН. Скачайте и пользуйтесь. Проще уже некуда.

Стабильный идентификатор устройства для приложений AIR на Android и iOS, считывается напрямую из системы.

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>

Примеры кода

Три полных сценария. Геттеры возвращаются сразу, не требуют разрешений и никогда не выбрасывают исключений: там, где идентификатор недоступен, они возвращают пустую строку. Полная документация →

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()Возвращает единственный экземпляр.
isSupportedTrue на Android и iOS.
uniqueIdИдентификатор устройства текущей платформы: ANDROID_ID на Android, identifierForVendor на iOS; пустая строка там, где недоступен.
androidIdТолько идентификатор устройства Android, остающийся прежним после удаления и повторной установки; пустая строка на iOS и других платформах.

Купить KlugDeviceId

Годовая лицензия на одно приложение AIR со всеми обновлениями в течение 12 месяцев. После оплаты вы получаете расширение, библиотеку ActionScript и документацию по e-mail, обычно в течение одного рабочего дня. Лицензия и условия

Базовый
€19 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Без поддержки
Купить Базовый
Стандартный
€149 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Ответ по e-mail в течение 7 дней
Купить Стандартный
Приоритетный
€299 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Ответ по e-mail в течение 48 часов
Купить Приоритетный
Налоги рассчитываются при оформлении заказа через Link (Stripe). ID приложения вашего приложения AIR вы указываете при оформлении заказа.

Требования

AIR SDK51.x (HARMAN)
iOSiOS 17 или новее
AndroidAndroid 6.0 (API 23) или новее
РазрешенияНет