我正在使用idandersen的scifihifi-iphone代码进行钥匙链和保存密码使用
[SFHFKeychainUtils storeUsername:@"User" andPassword:@"123"
forServiceName:@"TestService" updateExisting:YES error:&error];
当我从设备中删除应用程序时,密码仍然保留在密钥链中。
当用户从设备中删除应用程序时,我想从密钥链中删除密码。我该怎么做呢?
你可以利用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
}
如果你的应用程序第一次运行时还没有设置“FirstRun”键/值,这将在NSUserDefaults中检查和设置它。有一个注释,你应该把代码从钥匙串删除值。同步可以被调用,以确保“FirstRun”键/值立即被持久化,以防用户在系统持久化应用程序之前手动杀死它。
你可以利用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
}
如果你的应用程序第一次运行时还没有设置“FirstRun”键/值,这将在NSUserDefaults中检查和设置它。有一个注释,你应该把代码从钥匙串删除值。同步可以被调用,以确保“FirstRun”键/值立即被持久化,以防用户在系统持久化应用程序之前手动杀死它。