2016-07-01 14 views
2

さまざまなリンクとqを読み込んだ後、一意のIDを作成してキーチェーンに保存します。キーチェーンを使用してアプリを再インストールしてもiOSデバイスの一意のIDを生成する正しい方法

要件は、アプリの再インストールで一意のIDを維持することです。しかし、私はこの値をiCloudと同期させないようにして、ユーザーが別のデバイスにバックアップするときの問題を防ぎたいと思っています。

これは私がスウィフトに一意のIDを作成しています方法です:

let kcWrapper = KeychainWrapper() 
let uuidObject = CFUUIDCreate(kCFAllocatorDefault); 
let uniqueStr = CFUUIDCreateString(kCFAllocatorDefault, uuidObject) 
kcWrapper.mySetObject(uniqueStr, forKey:kSecValueData) 
kcWrapper.writeToKeychain() 

私が使用しているラッパーはこのチュートリアルからです:https://www.raywenderlich.com/92667/securing-ios-data-keychain-touch-id-1password

がクラウドに、この同期一意のIDをないか、私が持っていません明示的に同期させないように設定するには?

+0

'UIDevice'クラスの' identifierForVendor'を参照してください。 –

+0

これをチェックしました。ユーザーが開発者からすべてのアプリケーションをアンインストールし、再度インストールした場合は一度だけ変更されます。 – kishorer747

+0

を再インストールする必要がある場合は、_keychain_と_iCloud_も使用する必要があります。アプリケーションのライフサイクル中に特定のユーザーのデバイス間で一意の識別子を保持するのに役立ちます。 – holex

答えて

0

iCloudとの同期を防ぐ必要はありません。しかし、あなたの一意の識別子のような現在のデバイスでのみ利用可能な情報が必要な場合は、正しいキーチェーンアイテムアクセシビリティ属性kSecAttrAccessibleを使用することができます。接尾辞 "ThisDeviceOnly"を持つものは、使用する可能性のある定数のリストを参照してください:https://developer.apple.com/reference/security/1658642-keychain_services/1663541-keychain_item_accessibility_cons

iOS 8 kSecAttrAccessibleWhenUnlockedからデフォルトで使用されるため、ThisDeviceOnlyモードを明示的に設定して、他のデバイスとの同期を制限する必要があります。

更新:あなたはそれを初期化する際に必要なアクセシビリティ属性を指定する必要がgithub.com/kishikawakatsumi/KeychainAccessキーホルダーラッパーの :

let keychain = Keychain(service: "com.example.github-token") 
    .label("github.com (kishikawakatsumi)") 
    .synchronizable(true) 
    .accessibility(.whenPasscodeSetThisDeviceOnly) 

このアクセス可能に属性が格納されているアイテムに追加されます。

+0

リンクに感謝します。しかし、私は別のキーチェーンラッパーを使用しています。値を保存するときにアクセシビリティ属性を指定する必要はありません。ここにライブラリのリンクがあります:https://github.com/kishikawakatsumi/KeychainAccess – kishorer747

+0

@ kishorer747あなたが言及したラッパーを確認しました - それは確かに特定のアクセシビリティ属性をサポートしています。 public enumアクセシビリティを参照してください。たとえば、次の初期化コードを使用できます。let keychain = Keychain(サービス: "com.example.github-token") .label( "github.com(kishikawakatsumi)") .synchronizable(true) .accessibility(。 whenPasscodeSetThisDeviceOnly) –

関連する問題