为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

iOS
慕哥6287543 2019-10-23 16:35:34
我正在使用idandersen的scifihifi-iphone代码作为钥匙串并使用以下代码保存密码[SFHFKeychainUtils storeUsername:@"User" andPassword:@"123"              forServiceName:@"TestService" updateExisting:YES error:&error];当我从设备上删除应用程序时,密码保留在钥匙串中。当用户从设备中删除应用程序时,我想从钥匙串中删除密码。我怎样才能做到这一点?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

你可以利用这一事实的优点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”键/值立即保留,以防用户在系统保留应用程序之前手动将其终止。


查看完整回答
反对 回复 2019-10-23
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

对于寻找@amro答案的Swift 3.0版本的用户:


let userDefaults = UserDefaults.standard


if !userDefaults.bool(forKey: "hasRunBefore") {

     // Remove Keychain items here


     // Update the flag indicator

     userDefaults.set(true, forKey: "hasRunBefore")

}

*请注意,不建议使用syncnize()函数


查看完整回答
反对 回复 2019-10-23
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

从设备删除应用程序后,没有触发器可以执行代码。对钥匙串的访问取决于用于对应用程序进行签名的供应配置文件。因此,没有其他应用程序能够访问钥匙串中的此信息。


当用户从设备中删除应用程序时,目的是要删除钥匙串中的密码,这无济于事,但应为您提供一些密码无法访问(只能从原始应用程序重新安装)的便利。


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 764 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信