2017-08-11 18 views
0

xcode8 + swift3でiOSアプリを開発しています。アプリを再インストールしてもキーチェーンのパスワードが保存されています

キーチェーンにユーザーパスワードを格納し、キーチェーンからパスワードを読み取る機能を作成しました。あなたが作成した機能についてはhereを参照することができます。

私が一般に気づいた問題は、アプリを再インストールしても、キーチェーンからのアプリの読み取りパスワードが以前にインストールされたアプリのパスワード(既にアンインストール済み)です。

私の質問は、この問題に対処するベストプラクティスは何ですか?あなたがすることができるアプリデリゲートで

+0

項目店も、あなたはアプリを削除して持続します。古い詳細が必要ない場合は、アプリケーションをインストールした後にキーチェーン項目を削除することができます。 –

+0

はい、私は同じと思いますが、実際にそれを実行するのに最適な場所はどこですか? AppDelegateは完了しましたか? –

+0

uはboolフラグをuserdefaultsに格納し、AppDelegateをチェックインすることができます。あなたがアプリを削除するとUSerdefualtsが削除されるので、うまくいくはずです! –

答えて

0

:あなたがキーチェーンにデータを保存した後

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    BOOL savedInKeychain = [[NSUserDefaults standardUserDefaults]boolForKey:@"savedInKeychain"]; 
    if(!savedInKeychain){ 
    //There is no keychian data saved in this app 
    //check if data exisst in keychain 
    if(kechainData){ 
     //Delete keychain data 
    } 

    return YES; 
} 

その後、userdefaultsにYESにsavedInKeychainを設定します。

0

キーチェーンは、アンインストール後に暗号化され、永続化されます。 NSUserdefaultsは暗号化されておらず(パスワードの保存はお勧めしません)、アンインストール後は永続的ではありません。アプリの最初の打ち上げがあるかどうかを確認し、これを使用することができますキーチェーンをリセットするために

:キーチェーンに

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]) 
    { 
     // reset keychain 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 
    return YES; 
} 
関連する問題