2017-02-13 23 views
2

looking aroundは、アプリのアンインストールと再インストールの検出方法を見つけました。事は、私はを使用しない、私はSwiftKeychainWrapperを使用しています。アプリのアンインストール/再インストールを検出する機能

アプリをアンインストールするときに、そのユーザーのキーチェーンを消去する必要があります。

didFinishLaunchingWithOptionsアプリがロードされているときに呼び出されるようです。再インストールを検出する方法はありますか?

return KeychainWrapper.standard.removeObject(forKey: "myKey") // only when/if app is unsinstalled/reinstalling 

答えて

2

機密情報を保存する必要があるため、キーチェーンを使用していると思われますか?その場合は、UserDefaultsにブール値を格納し、それが存在するかどうかを確認するだけです。例:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    let freshInstall = !UserDefaults.standard.bool(forKey: "alreadyInstalled") 
    if freshInstall { 
     // delete your item from keychain 
     UserDefaults.standard.set(true, forKey: "alreadyInstalled") 
    } 

    return true 
} 

この方法でも、キーチェーンのセキュリティは維持されますが、アンインストール/再インストール時のUserDefaultsの動作はそのままです。答えの「//あなたの項目を削除」の部分にキーホルダーをクリアする方法を探し他人のため

+0

感謝。 SwiftKeychainWrapperに問題があるようです。あなたのメソッドは正しい時刻に呼び出されるので、私はこの答えを正しいものにします。ありがとう。 – Sylar

+0

このコードでは、アプリケーションの再インストールまたはアンインストールを含む情報は提供されません。それはちょうど私が新しいアプリだとあなたに伝えます。 – aytek

+0

@ayteqしかし、残念なことに、アプリが非jailbrokenデバイスで削除されたときにコードを呼び出す方法はありませんが、このアプローチは同じ目的をラウンドアバウトで達成します。そして、OPは彼の質問で、彼のシナリオでは、インストールは問題ありませんでした。 –

1

.....

スウィフト3

let _ = KeychainWrapper.standard.removeAllKeys() 
関連する問題