Обзор
KlugKeychain хранит небольшие значения, например флаги, токены или ID, в связке ключей iOS и macOS. В отличие от обычного хранилища приложения, связка ключей сохраняет эти значения, когда приложение удаляют и устанавливают снова.
Это делает её долговечным якорем для того, что приложению нужно помнить между переустановками, например использовало ли устройство уже бесплатный пробный период или удалялся ли аккаунт ранее.
KlugKeychain ежедневно используется в наших приложениях, нашем доказательстве работоспособности.
Возможности
- Автономность: один ANE, без базовой библиотеки и зависимых ANE
- Сохранение, чтение, проверка и удаление значений по ключу
- Значения сохраняются после удаления и повторной установки приложения
- Шифруются операционной системой в системной связке ключей
- Один API для iOS и macOS
- Простые синхронные вызовы, обрабатывать события не нужно
Поддерживаемые платформы
На других платформах isSupported возвращает false, поэтому один и тот же код можно оставить в кроссплатформенном приложении.
Начало работы
Добавьте расширение в дескриптор вашего приложения:
<extensions>
<extensionID>com.klug.keychain.Keychain</extensionID>
</extensions>
На macOS приложение должно быть подписано с entitlement группы доступа к связке ключей. На iOS дополнительный entitlement не нужен.
Примеры кода
Три полных сценария. Все вызовы синхронные и возвращаются сразу; значения — строки. Полная документация →
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
| Keychain.getInstance() | Возвращает единственный экземпляр. |
| isSupported | True на iOS. На macOS true, если приложение подписано с entitlement группы доступа к связке ключей; false на остальных платформах. |
| set(key, value) | Сохраняет строку, заменяя существующую. Возвращает true при успехе; false, если не поддерживается или key либо value равны null. |
| get(key) | Возвращает сохранённое значение или пустую строку, если его нет. |
| has(key) | True, если для ключа сохранено значение. |
| remove(key) | Удаляет значение. Возвращает true, когда ключа больше не существует. |
| Хранилище | Элементы Generic password вашего приложения, доступные для чтения после первой разблокировки устройства, в том числе в фоновом режиме. |
Купить KlugKeychain
Годовая лицензия на одно приложение AIR со всеми обновлениями в течение 12 месяцев. После оплаты вы получаете расширение, библиотеку ActionScript и документацию по e-mail, обычно в течение одного рабочего дня. Лицензия и условия
- Лицензия на одно приложение AIR
- Все обновления в течение 12 месяцев
- Без поддержки
- Лицензия на одно приложение AIR
- Все обновления в течение 12 месяцев
- Ответ по e-mail в течение 7 дней
- Лицензия на одно приложение AIR
- Все обновления в течение 12 месяцев
- Ответ по e-mail в течение 48 часов
Требования
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 или новее |
| macOS | macOS 11 или новее |
| Подпись (macOS) | Entitlement группы доступа к связке ключей |