Oversigt
Mange apps har brug for at genkende en enhed: for at knytte en prøveperiode eller en licens til den, for at begrænse antallet af enheder pr. konto eller for at finde en enhed igen, efter at brugeren har geninstalleret appen. KlugDeviceId læser en stabil identifikator direkte fra operativsystemet.
På Android forbliver identifikatoren den samme, efter at appen er afinstalleret og installeret igen, hvilket gør den til et geninstallationssikkert anker. På iOS nulstilles systemidentifikatoren, når alle apps fra den samme udvikler fjernes; til et geninstallationssikkert anker på iOS og macOS bruges KlugKeychain.
KlugDeviceId er i daglig brug i vores apps, vores proof of concept.
Funktioner
- Selvstændig: én ANE, intet kernebibliotek eller afhængige ANE'er at tilføje
- Ét kald returnerer enhedsidentifikatoren på Android og iOS
- Android 8.0 og nyere: forbliver den samme efter afinstallation og geninstallation af appen, så længe den er signeret med den samme nøgle
- Ingen tilladelse nødvendig
- Returnerer en tom streng, hvor ingen identifikator er tilgængelig, aldrig en fejl
Understøttede platforme
På andre platforme returnerer isSupported false, så den samme kode kan blive i en cross-platform-app.
Kom i gang
Tilføj udvidelsen til din applikationsdescriptor:
<extensions>
<extensionID>com.klug.deviceid</extensionID>
</extensions>
Kodeeksempler
Tre komplette flows. Gettere vender straks tilbage, kræver ingen tilladelse og kaster aldrig en fejl: hvor ingen identifikator er tilgængelig, returnerer de en tom streng. Fuld dokumentation →
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 ); }
API-oversigt
| DeviceId.getInstance() | Returnerer den enkelte instans. |
| isSupported | Sand på Android og iOS. |
| uniqueId | Enhedsidentifikatoren for den kørende platform: ANDROID_ID på Android, identifierForVendor på iOS; en tom streng, hvor den ikke er tilgængelig. |
| androidId | Kun Android-enhedsidentifikatoren, som forbliver den samme efter afinstallation og geninstallation; en tom streng på iOS og andre platforme. |
Køb KlugDeviceId
En årlig licens til én AIR-applikation, med alle opdateringer i 12 måneder. Efter betaling modtager du udvidelsen, ActionScript-biblioteket og dokumentationen pr. e-mail, normalt inden for én hverdag. Licens og vilkår
- Licens til én AIR-applikation
- Alle opdateringer i 12 måneder
- Svar pr. e-mail inden for 7 dage
- Licens til én AIR-applikation
- Alle opdateringer i 12 måneder
- Svar pr. e-mail inden for 48 timer
Krav
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 eller nyere |
| Android | Android 6.0 (API 23) eller nyere |
| Tilladelser | Ingen |