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”键/值立即保留,以防用户在系统保留应用程序之前手动将其终止。
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()函数
TA贡献1801条经验 获得超15个赞
从设备删除应用程序后,没有触发器可以执行代码。对钥匙串的访问取决于用于对应用程序进行签名的供应配置文件。因此,没有其他应用程序能够访问钥匙串中的此信息。
当用户从设备中删除应用程序时,目的是要删除钥匙串中的密码,这无济于事,但应为您提供一些密码无法访问(只能从原始应用程序重新安装)的便利。
- 3 回答
- 0 关注
- 764 浏览
添加回答
举报