3 回答

TA貢獻1843條經(jīng)驗 獲得超7個贊
你可以利用這一事實的優(yōu)點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”鍵/值。有一條注釋,您應該在其中添加代碼以從鑰匙串中刪除值??梢哉{(diào)用Synchronize以確?!?FirstRun”鍵/值立即保留,以防用戶在系統(tǒng)保留應用程序之前手動將其終止。

TA貢獻1815條經(jīng)驗 獲得超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()函數(shù)

TA貢獻1801條經(jīng)驗 獲得超16個贊
從設備刪除應用程序后,沒有觸發(fā)器可以執(zhí)行代碼。對鑰匙串的訪問取決于用于對應用程序進行簽名的供應配置文件。因此,沒有其他應用程序能夠訪問鑰匙串中的此信息。
當用戶從設備中刪除應用程序時,目的是要刪除鑰匙串中的密碼,這無濟于事,但應為您提供一些密碼無法訪問(只能從原始應用程序重新安裝)的便利。
- 3 回答
- 0 關注
- 830 瀏覽
添加回答
舉報