← すべての拡張機能

ネイティブ拡張機能

KlugKeychain

com.klug.keychain.Keychain

APMは不要。ダウンロードしてすぐに使えます。これ以上シンプルにはできません。

AIR アプリ向けの、システムキーチェーンへの安全なキー/値ストレージ。値はアプリをアンインストールして再インストールしても保持されます。

iOSmacOS 本番稼働中 年額€19から · 購入

概要

KlugKeychain は、フラグ、トークン、IDなどの小さな値を iOS と macOS のキーチェーンに保存します。通常のアプリストレージとは異なり、キーチェーンはアプリをアンインストールして再インストールしても、これらの値を保持します。

そのため、アプリが再インストールをまたいで記憶しておく必要があること、たとえば、デバイスがすでに無料トライアルを使用したか、アカウントが以前に削除されたかといった情報の永続的なアンカーになります。

KlugKeychain は、実証の場である当社のアプリで毎日使われています。

機能

  • 自己完結型:ANE 1つで完結し、コアライブラリや依存 ANE の追加は不要
  • キーを指定して値を保存、読み取り、確認、削除
  • アプリをアンインストールして再インストールしても値が保持される
  • システムキーチェーン内で、オペレーティングシステムによって暗号化
  • iOS と macOS で共通の API
  • 処理すべきイベントのない、シンプルな同期呼び出し

対応プラットフォーム

iOS arm64
macOS Apple silicon · Intel

他のプラットフォームでは isSupported が false を返すため、同じコードをクロスプラットフォームのアプリにそのまま残せます。

Android では、KlugDeviceId が同じ再インストール耐性のあるアンカーを提供します。アプリをアンインストールして再インストールしても、Android のデバイスIDは変わりません。

はじめに

アプリケーション記述子に拡張機能を追加します:

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

macOS では、アプリをキーチェーンアクセスグループの entitlement で署名する必要があります。iOS では追加の entitlement は不要です。

コード例

3つの完全なフローです。すべての呼び出しは同期的で、即座に返ります。値は文字列です。完全なドキュメント →

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()唯一のインスタンスを返します。
isSupportediOS では true。macOS では、アプリがキーチェーンアクセスグループの entitlement で署名されている場合に true。他のプラットフォームでは false。
set(key, value)文字列を保存し、既存の値があれば置き換えます。成功すると true を返します。非対応、または key か value が null の場合は false。
get(key)保存されている値を返します。ない場合は空文字列を返します。
has(key)そのキーに値が保存されていれば true。
remove(key)値を削除します。キーが存在しなくなった時点で true を返します。
ストレージアプリの汎用パスワード項目で、デバイスの最初のロック解除後は、バックグラウンドでも読み取れます。

KlugKeychain を購入

AIR アプリケーション1つ分の年間ライセンスで、12か月間のすべてのアップデートが含まれます。お支払い後、拡張機能、ActionScript ライブラリ、ドキュメントをメールでお送りします(通常は1営業日以内)。ライセンスと条件

シンプル
€19 / 年
  • AIR アプリケーション1つ分のライセンス
  • 12か月間のすべてのアップデート
  • サポートなし
シンプルを購入
スタンダード
€149 / 年
  • AIR アプリケーション1つ分のライセンス
  • 12か月間のすべてのアップデート
  • 7日以内にメールで回答
スタンダードを購入
プライオリティ
€299 / 年
  • AIR アプリケーション1つ分のライセンス
  • 12か月間のすべてのアップデート
  • 48時間以内にメールで回答
プライオリティを購入
税金は Link(Stripe)によりチェックアウト時に計算されます。チェックアウト時に、AIR アプリのアプリケーションIDを入力してください。

動作要件

AIR SDK51.x(HARMAN)
iOSiOS 17 以降
macOSmacOS 11 以降
署名(macOS)キーチェーンアクセスグループの entitlement