卸载应用程序时删除钥匙串项

我正在使用idandersen的scifihifi-iphone代码作为钥匙串并使用以下代码保存密码


[SFHFKeychainUtils storeUsername:@"User" andPassword:@"123"

              forServiceName:@"TestService" updateExisting:YES error:&error];

当我从设备上删除应用程序时,密码保留在钥匙串中。


当用户从设备中删除应用程序时,我想从钥匙串中删除密码。我怎样才能做到这一点?


慕哥6287543
浏览 711回答 3
3回答

蓝山帝景

你可以利用这一事实的优点NSUserDefaults 是通过一个应用程序的卸载清除。例如:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    //Clear keychain on first run in case of reinstallation    if (![[NSUserDefaults standardUserDefaults] objectForKey:@"FirstRun"]) {        // Delete values from keychain here        [[NSUserDefaults standardUserDefaults] setValue:@"1strun" forKey:@"FirstRun"];        [[NSUserDefaults standardUserDefaults] synchronize];    }    //...Other stuff that usually happens in didFinishLaunching}NSUserDefaults如果尚未设置,它将在您的应用程序第一次运行时检查并设置“ FirstRun”键/值。有一条注释,您应该在其中添加代码以从钥匙串中删除值。可以调用Synchronize以确保“ FirstRun”键/值立即保留,以防用户在系统保留应用程序之前手动将其终止。

红糖糍粑

对于寻找@amro答案的Swift 3.0版本的用户:let userDefaults = UserDefaults.standardif !userDefaults.bool(forKey: "hasRunBefore") {     // Remove Keychain items here     // Update the flag indicator     userDefaults.set(true, forKey: "hasRunBefore")}*请注意,不建议使用syncnize()函数

侃侃尔雅

从设备删除应用程序后,没有触发器可以执行代码。对钥匙串的访问取决于用于对应用程序进行签名的供应配置文件。因此,没有其他应用程序能够访问钥匙串中的此信息。当用户从设备中删除应用程序时,目的是要删除钥匙串中的密码,这无济于事,但应为您提供一些密码无法访问(只能从原始应用程序重新安装)的便利。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS