← Все расширения

Нативное расширение

KlugKeychain

com.klug.keychain.Keychain

APM НЕ НУЖЕН. Скачайте и пользуйтесь. Проще уже некуда.

Безопасное хранилище «ключ/значение» в системной связке ключей для приложений AIR. Значения сохраняются после удаления и повторной установки приложения.

iOSmacOS В продакшене От €19 / год · Купить

Обзор

KlugKeychain хранит небольшие значения, например флаги, токены или ID, в связке ключей iOS и macOS. В отличие от обычного хранилища приложения, связка ключей сохраняет эти значения, когда приложение удаляют и устанавливают снова.

Это делает её долговечным якорем для того, что приложению нужно помнить между переустановками, например использовало ли устройство уже бесплатный пробный период или удалялся ли аккаунт ранее.

KlugKeychain ежедневно используется в наших приложениях, нашем доказательстве работоспособности.

Возможности

  • Автономность: один ANE, без базовой библиотеки и зависимых ANE
  • Сохранение, чтение, проверка и удаление значений по ключу
  • Значения сохраняются после удаления и повторной установки приложения
  • Шифруются операционной системой в системной связке ключей
  • Один API для iOS и macOS
  • Простые синхронные вызовы, обрабатывать события не нужно

Поддерживаемые платформы

iOS arm64
macOS Apple silicon · Intel

На других платформах isSupported возвращает false, поэтому один и тот же код можно оставить в кроссплатформенном приложении.

На Android такой же якорь, устойчивый к переустановке, обеспечивает KlugDeviceId: ID устройства Android остаётся прежним после удаления и повторной установки приложения.

Начало работы

Добавьте расширение в дескриптор вашего приложения:

app.xml
<extensions>
    <extensionID>com.klug.keychain.Keychain</extensionID>
</extensions>

На macOS приложение должно быть подписано с entitlement группы доступа к связке ключей. На iOS дополнительный entitlement не нужен.

Примеры кода

Три полных сценария. Все вызовы синхронные и возвращаются сразу; значения — строки. Полная документация →

1 · Проверка поддержки и выбор запасного варианта
Setup.as
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
2 · Запоминание бесплатного пробного периода между переустановками
Trial.as
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 ) );
}
3 · Сохранение, чтение и удаление значения
Account.as
// 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()Возвращает единственный экземпляр.
isSupportedTrue на 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, обычно в течение одного рабочего дня. Лицензия и условия

Базовый
€19 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Без поддержки
Купить Базовый
Стандартный
€149 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Ответ по e-mail в течение 7 дней
Купить Стандартный
Приоритетный
€299 / год
  • Лицензия на одно приложение AIR
  • Все обновления в течение 12 месяцев
  • Ответ по e-mail в течение 48 часов
Купить Приоритетный
Налоги рассчитываются при оформлении заказа через Link (Stripe). ID приложения вашего приложения AIR вы указываете при оформлении заказа.

Требования

AIR SDK51.x (HARMAN)
iOSiOS 17 или новее
macOSmacOS 11 или новее
Подпись (macOS)Entitlement группы доступа к связке ключей