Überblick
KlugKeychain speichert kleine Werte wie Flags, Tokens oder IDs im Schlüsselbund von iOS und macOS. Anders als der normale App-Speicher behält der Schlüsselbund diese Werte, wenn die App deinstalliert und erneut installiert wird.
Das macht ihn zu einem dauerhaften Anker für alles, was eine App über Neuinstallationen hinweg wissen muss, zum Beispiel ob ein Gerät die kostenlose Testphase bereits genutzt hat oder ob ein Konto zuvor gelöscht wurde.
KlugKeychain ist in unseren Apps täglich im Einsatz, unserem Praxisbeweis.
Funktionen
- Eigenständig: eine ANE, keine Kernbibliothek und keine abhängigen ANEs, die Sie ergänzen müssten
- Werte per Schlüssel speichern, lesen, prüfen und entfernen
- Werte überdauern das Deinstallieren und erneute Installieren der App
- Vom Betriebssystem im System-Schlüsselbund verschlüsselt
- Eine API für iOS und macOS
- Einfache synchrone Aufrufe, keine Ereignisse zu behandeln
Unterstützte Plattformen
Auf anderen Plattformen gibt isSupported false zurück, sodass derselbe Code in einer plattformübergreifenden App bleiben kann.
Erste Schritte
Fügen Sie die Erweiterung Ihrem Application Descriptor hinzu:
<extensions>
<extensionID>com.klug.keychain.Keychain</extensionID>
</extensions>
Unter macOS muss die App mit einem Keychain-Access-Group-Entitlement signiert sein. Unter iOS ist kein zusätzliches Entitlement nötig.
Codebeispiele
Drei vollständige Abläufe. Alle Aufrufe sind synchron und kehren sofort zurück; Werte sind Strings. Vollständige Dokumentation →
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" );
API-Übersicht
| Keychain.getInstance() | Gibt die einzige Instanz zurück. |
| isSupported | True unter iOS. Unter macOS true, wenn die App mit einem Keychain-Access-Group-Entitlement signiert ist; auf anderen Plattformen false. |
| set(key, value) | Speichert einen String und ersetzt einen vorhandenen. Gibt bei Erfolg true zurück; false, wenn nicht unterstützt oder key bzw. value null ist. |
| get(key) | Gibt den gespeicherten Wert zurück, oder einen leeren String, wenn keiner vorhanden ist. |
| has(key) | True, wenn für den Schlüssel ein Wert gespeichert ist. |
| remove(key) | Entfernt den Wert. Gibt true zurück, sobald der Schlüssel nicht mehr existiert. |
| Speicher | Generische Passwort-Einträge Ihrer App, lesbar nach dem ersten Entsperren des Geräts, auch im Hintergrund. |
KlugKeychain kaufen
Eine Jahreslizenz für eine AIR-Anwendung, mit allen Updates für 12 Monate. Nach der Zahlung erhalten Sie die Erweiterung, die ActionScript-Bibliothek und die Dokumentation per E-Mail, in der Regel innerhalb eines Werktags. Lizenz und Bedingungen
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Kein Support
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Antwort per E-Mail innerhalb von 7 Tagen
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Antwort per E-Mail innerhalb von 48 Stunden
Voraussetzungen
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 oder neuer |
| macOS | macOS 11 oder neuer |
| Signierung (macOS) | Keychain-Access-Group-Entitlement |