Resumen
Muchas apps necesitan reconocer un dispositivo: para vincularle una prueba o una licencia, para limitar el número de dispositivos por cuenta o para encontrar un dispositivo de nuevo después de que el usuario haya reinstalado la app. KlugDeviceId lee un identificador estable directamente del sistema operativo.
En Android el identificador sigue siendo el mismo después de desinstalar e instalar de nuevo la app, lo que lo convierte en un ancla a prueba de reinstalaciones. En iOS el identificador del sistema se restablece cuando se eliminan todas las apps del mismo desarrollador; para un ancla a prueba de reinstalaciones en iOS y macOS usa KlugKeychain.
KlugDeviceId se usa a diario en nuestras apps, nuestra prueba de concepto.
Funciones
- Autónoma: una ANE, sin biblioteca central ni ANE de dependencias que añadir
- Una sola llamada devuelve el identificador del dispositivo en Android e iOS
- Android 8.0 y posterior: sigue siendo el mismo tras desinstalar y reinstalar la app, siempre que esté firmada con la misma clave
- No requiere permisos
- Devuelve una cadena vacía donde no hay identificador disponible, nunca un error
Plataformas compatibles
En otras plataformas isSupported devuelve false, por lo que el mismo código puede permanecer en una app multiplataforma.
Primeros pasos
Añade la extensión al descriptor de tu aplicación:
<extensions>
<extensionID>com.klug.deviceid</extensionID>
</extensions>
Ejemplos de código
Tres flujos completos. Los getters devuelven de inmediato, no requieren permisos y nunca lanzan excepciones: donde no hay identificador disponible devuelven una cadena vacía. Documentación completa →
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 ); }
Resumen de la API
| DeviceId.getInstance() | Devuelve la instancia única. |
| isSupported | Verdadero en Android e iOS. |
| uniqueId | El identificador del dispositivo de la plataforma en ejecución: ANDROID_ID en Android, identifierForVendor en iOS; una cadena vacía donde no esté disponible. |
| androidId | Solo el identificador de dispositivo de Android, que sigue siendo el mismo tras desinstalar y reinstalar; una cadena vacía en iOS y otras plataformas. |
Compra KlugDeviceId
Una licencia anual para una aplicación AIR, con todas las actualizaciones durante 12 meses. Tras el pago recibes la extensión, la biblioteca ActionScript y la documentación por e-mail, normalmente en un día hábil. Licencia y términos
- Licencia para una aplicación AIR
- Todas las actualizaciones durante 12 meses
- Sin soporte
- Licencia para una aplicación AIR
- Todas las actualizaciones durante 12 meses
- Respuesta por e-mail en un plazo de 7 días
- Licencia para una aplicación AIR
- Todas las actualizaciones durante 12 meses
- Respuesta por e-mail en un plazo de 48 horas
Requisitos
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 o posterior |
| Android | Android 6.0 (API 23) o posterior |
| Permisos | Ninguno |