3 回答

TA貢獻(xiàn)1811條經(jīng)驗 獲得超6個贊
你可以利用這一事實的優(yōu)點NSUserDefaults 是通過一個應(yīng)用程序的卸載清除。例如:
- (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如果尚未設(shè)置,它將在您的應(yīng)用程序第一次運(yùn)行時檢查并設(shè)置“ FirstRun”鍵/值。有一條注釋,您應(yīng)該在其中添加代碼以從鑰匙串中刪除值。可以調(diào)用Synchronize以確?!?FirstRun”鍵/值立即保留,以防用戶在系統(tǒng)保留應(yīng)用程序之前手動將其終止。

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