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
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 :
<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 →
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 ); }
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
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. |
| isSupported | Vrai sur Android et iOS. |
| uniqueId | L’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. |
| androidId | Uniquement 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
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Sans support
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Réponse par e-mail sous 7 jours
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Réponse par e-mail sous 48 heures
Prérequis
| SDK AIR | 51.x (HARMAN) |
| iOS | iOS 17 ou version ultérieure |
| Android | Android 6.0 (API 23) ou version ultérieure |
| Autorisations | Aucune |