← 모든 확장

네이티브 확장

KlugKeychain

com.klug.keychain.Keychain

APM이 필요 없습니다. 다운로드해서 바로 사용하세요. 이보다 더 간단할 수 없습니다.

AIR 앱을 위한 시스템 키체인의 안전한 키/값 저장소입니다. 앱을 삭제했다가 다시 설치해도 값이 유지됩니다.

iOSmacOS 프로덕션 운영 중 연 €19부터 · 구매

개요

KlugKeychain은 플래그, 토큰, ID 같은 작은 값을 iOS와 macOS의 키체인에 저장합니다. 일반 앱 저장소와 달리 키체인은 앱을 삭제했다가 다시 설치해도 이 값들을 유지합니다.

그래서 앱이 재설치 후에도 기억해야 하는 정보, 예를 들어 기기가 이미 무료 체험을 사용했는지, 계정이 이전에 삭제된 적이 있는지 등을 위한 내구성 있는 앵커가 됩니다.

KlugKeychain은 개념 증명인 저희 앱에서 매일 사용되고 있습니다.

기능

  • 독립형: ANE 하나로 충분하며, 코어 라이브러리나 의존성 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에서는 앱을 keychain access group 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()단일 인스턴스를 반환합니다.
isSupportediOS에서는 true입니다. macOS에서는 앱이 keychain access group entitlement로 서명된 경우 true이며, 다른 플랫폼에서는 false입니다.
set(key, value)문자열을 저장하며 기존 값은 대체합니다. 성공하면 true를 반환하고, 지원되지 않거나 key 또는 value가 null이면 false를 반환합니다.
get(key)저장된 값을 반환하며, 없으면 빈 문자열을 반환합니다.
has(key)해당 키에 값이 저장되어 있으면 true입니다.
remove(key)값을 제거합니다. 키가 더 이상 존재하지 않으면 true를 반환합니다.
저장소앱의 일반 비밀번호 항목(generic password item)이며, 기기를 처음 잠금 해제한 이후에는 백그라운드에서도 읽을 수 있습니다.

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)Keychain access group entitlement