Visão geral
Muitos apps precisam reconhecer um dispositivo: para vincular um teste ou uma licença a ele, limitar o número de dispositivos por conta ou encontrar um dispositivo de novo depois que o usuário reinstalou o app. O KlugDeviceId lê um identificador estável diretamente do sistema operacional.
No Android, o identificador continua o mesmo depois que o app é desinstalado e instalado de novo, o que o torna uma âncora à prova de reinstalação. No iOS, o identificador do sistema é redefinido quando todos os apps do mesmo desenvolvedor são removidos; para uma âncora à prova de reinstalação no iOS e macOS, use o KlugKeychain.
O KlugDeviceId é usado diariamente em nossos apps, nossa prova de conceito.
Recursos
- Autossuficiente: uma ANE, sem biblioteca principal nem ANEs de dependência para adicionar
- Uma única chamada retorna o identificador do dispositivo no Android e iOS
- Android 8.0 e posterior: continua o mesmo após desinstalar e reinstalar o app, desde que ele seja assinado com a mesma chave
- Nenhuma permissão necessária
- Retorna uma string vazia onde nenhum identificador está disponível, nunca um erro
Plataformas compatíveis
Em outras plataformas, isSupported retorna false, de modo que o mesmo código pode permanecer em um app multiplataforma.
Primeiros passos
Adicione a extensão ao descritor do seu aplicativo:
<extensions>
<extensionID>com.klug.deviceid</extensionID>
</extensions>
Exemplos de código
Três fluxos completos. Os getters retornam imediatamente, não exigem permissão e nunca lançam exceção: onde nenhum identificador está disponível, retornam uma string vazia. Documentação 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 ); }
Visão geral da API
| DeviceId.getInstance() | Retorna a instância única. |
| isSupported | Verdadeiro no Android e iOS. |
| uniqueId | O identificador do dispositivo da plataforma em execução: ANDROID_ID no Android, identifierForVendor no iOS; uma string vazia onde não está disponível. |
| androidId | Somente o identificador de dispositivo do Android, que continua o mesmo após desinstalar e reinstalar; uma string vazia no iOS e em outras plataformas. |
Compre o KlugDeviceId
Uma licença anual para um app AIR, com todas as atualizações por 12 meses. Após o pagamento, você recebe a extensão, a biblioteca ActionScript e a documentação por e-mail, normalmente em até um dia útil. Licença e termos
- Licença para um app AIR
- Todas as atualizações por 12 meses
- Sem suporte
- Licença para um app AIR
- Todas as atualizações por 12 meses
- Resposta por e-mail em até 7 dias
- Licença para um app AIR
- Todas as atualizações por 12 meses
- Resposta por e-mail em até 48 horas
Requisitos
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 ou posterior |
| Android | Android 6.0 (API 23) ou posterior |
| Permissões | Nenhuma |