← Toutes les extensions

Extension native

KlugDeviceId

com.klug.deviceid

AUCUN APM NÉCESSAIRE. Téléchargez et profitez-en. Impossible de faire plus simple.

Un identifiant stable par appareil pour les applications AIR sur Android et iOS, lu directement depuis le système.

iOSAndroid En production À partir de €19 / an · Acheter

Vue d’ensemble

De nombreuses applications ont besoin de reconnaître un appareil : pour y lier un essai ou une licence, limiter le nombre d’appareils par compte, ou retrouver un appareil après une réinstallation de l’application. KlugDeviceId lit un identifiant stable directement depuis le système d’exploitation.

Sur Android, l’identifiant reste identique après la désinstallation puis la réinstallation de l’application : c’est une ancre résistante à la réinstallation. Sur iOS, l’identifiant système est réinitialisé lorsque toutes les applications d’un même développeur sont supprimées ; pour une ancre résistante à la réinstallation sur iOS et macOS, utilisez KlugKeychain.

KlugDeviceId est utilisé chaque jour dans nos applications, notre preuve de concept.

Fonctionnalités

  • Autonome : une seule ANE, sans bibliothèque centrale ni ANE de dépendance à ajouter
  • Un seul appel renvoie l’identifiant de l’appareil sur Android et iOS
  • Android 8.0 et versions ultérieures : reste identique après la désinstallation et la réinstallation de l’application, tant qu’elle est signée avec la même clé
  • Aucune autorisation nécessaire
  • Renvoie une chaîne vide lorsqu’aucun identifiant n’est disponible, jamais une erreur

Plateformes prises en charge

Android arm64 · armv7
iOS arm64

Sur les autres plateformes, isSupported renvoie false : le même code peut donc rester dans une application multiplateforme.

Prise en main

Ajoutez l’extension au descripteur de votre application :

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

Exemples de code

Trois flux complets. Les getters retournent immédiatement, ne nécessitent aucune autorisation et ne lèvent jamais d’exception : lorsqu’aucun identifiant n’est disponible, ils renvoient une chaîne vide. Documentation complète →

1 · Lire une fois et l’envoyer avec la connexion
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 · Conserver un essai d’une réinstallation à l’autre (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 · Code multiplateforme et valeurs vides
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 );
}

Aperçu de l’API

DeviceId.getInstance()Renvoie l’instance unique.
isSupportedVrai sur Android et iOS.
uniqueIdL’identifiant d’appareil de la plateforme en cours : ANDROID_ID sur Android, identifierForVendor sur iOS ; une chaîne vide s’il n’est pas disponible.
androidIdUniquement l’identifiant d’appareil Android, qui reste identique après la désinstallation et la réinstallation ; une chaîne vide sur iOS et les autres plateformes.

Acheter KlugDeviceId

Une licence annuelle pour une application AIR, avec toutes les mises à jour pendant 12 mois. Après le paiement, vous recevez l’extension, la bibliothèque ActionScript et la documentation par e-mail, généralement sous un jour ouvré. Licence et conditions

Simple
€19 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Sans support
Acheter Simple
Standard
€149 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Réponse par e-mail sous 7 jours
Acheter Standard
Priority
€299 / an
  • Licence pour une application AIR
  • Toutes les mises à jour pendant 12 mois
  • Réponse par e-mail sous 48 heures
Acheter Priority
Les taxes sont calculées lors du paiement par Link (Stripe). Vous saisissez l’identifiant d’application de votre app AIR pendant le paiement.

Prérequis

SDK AIR51.x (HARMAN)
iOSiOS 17 ou version ultérieure
AndroidAndroid 6.0 (API 23) ou version ultérieure
AutorisationsAucune