Visão geral
O KlugKeychain guarda pequenos valores, como flags, tokens ou IDs, no keychain do iOS e macOS. Diferente do armazenamento normal do app, o keychain mantém esses valores quando o app é desinstalado e instalado de novo.
Isso o torna uma âncora durável para o que um app precisa lembrar entre reinstalações, por exemplo se um dispositivo já usou um teste gratuito ou se uma conta já foi excluída antes.
O KlugKeychain é usado diariamente em nossos apps, nossa prova de conceito.
Recursos
- Autossuficiente: uma ANE, sem biblioteca principal nem ANEs de dependência para adicionar
- Armazene, leia, verifique e remova valores por chave
- Os valores sobrevivem à desinstalação e reinstalação do app
- Criptografado pelo sistema operacional no keychain do sistema
- Uma única API para iOS e macOS
- Chamadas síncronas simples, sem eventos para tratar
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.keychain.Keychain</extensionID>
</extensions>
No macOS, o app precisa ser assinado com uma entitlement de keychain access group. No iOS, nenhuma entitlement extra é necessária.
Exemplos de código
Três fluxos completos. Todas as chamadas são síncronas e retornam imediatamente; os valores são strings. Documentação completa →
import com.klug.keychain.Keychain; var keychain:Keychain = Keychain.getInstance(); // iOS: always true. // macOS: true only if the app is signed with a keychain access group entitlement; // the extension checks this with a test write. // Android, Windows: false, and every call is a safe no-op. if ( !keychain.isSupported ) useLocalStorage(); // your app's fallback, e.g. a SharedObject
const TRIAL_DAYS:Number = 7; if ( keychain.has( "trialStarted" ) ) { var started:Number = Number( keychain.get( "trialStarted" ) ); var days:Number = ( new Date().time - started ) / 86400000; if ( days > TRIAL_DAYS ) showPurchaseScreen(); // your app } else { // stays in the keychain after the app is uninstalled and installed again keychain.set( "trialStarted", String( new Date().time ) ); }
// set() replaces an existing value; false = not stored if ( !keychain.set( "accountId", accountId ) ) trace( "keychain: value not stored" ); // get() returns "" when nothing is stored var id:String = keychain.get( "accountId" ); if ( id == "" ) showSignIn(); // your app // sign-out: remove what the app no longer needs; // true also when the key was already gone keychain.remove( "accountId" );
Visão geral da API
| Keychain.getInstance() | Retorna a instância única. |
| isSupported | Verdadeiro no iOS. No macOS, verdadeiro quando o app é assinado com uma entitlement de keychain access group; falso nas demais plataformas. |
| set(key, value) | Armazena uma string, substituindo uma existente. Retorna true em caso de sucesso; false se não houver suporte ou se a chave ou o valor for null. |
| get(key) | Retorna o valor armazenado, ou uma string vazia se não houver nenhum. |
| has(key) | Verdadeiro se há um valor armazenado para a chave. |
| remove(key) | Remove o valor. Retorna true quando a chave deixa de existir. |
| Armazenamento | Itens de senha genéricos do seu app, legíveis após o primeiro desbloqueio do dispositivo, também em segundo plano. |
Compre o KlugKeychain
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 |
| macOS | macOS 11 ou posterior |
| Assinatura (macOS) | Entitlement de keychain access group |