有没有办法在app卸载后保留一些数据,并且可以在app再次安装后检索?
我找到了NSUserDefault,但我不确定。请指教。
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("Coding Explorer", forKey: "userNameKey")
答案 0 :(得分:4)
您需要使用钥匙串,以了解有关应用程序的明智信息。
以下是如何实现这一目标的示例。
当用户从设备卸载应用程序时,UserDefaults将被删除,因此替代方案是Keychain。
答案 1 :(得分:0)
NSUserDefaults
将被清除。这样做的最佳方式我认为它使用keychain这也可以确保您的数据已加密且其他人无法访问。
答案 2 :(得分:0)
这很可能是使用iOS上的钥匙串完成的。
但是从我的观点来看,卸载后留下数据违反了应用程序的沙盒。有办法做到这一点,就像你可以添加图片/照片/联系人/ ......,但不太可能" Apple批准"而且很容易被黑客攻击。
所以我也建议你使用网络服务。一个简单的方法是在没有找到应用程序数据(安装和重新安装)的情况下验证服务(例如,使用设备的MAC地址,因为设备唯一标识符正在消失),如果它已经知道设备(无代币)与否(获取代币)。
答案 3 :(得分:0)
就我个人而言,不会使用钥匙串,对于像这样简单的事情来说,这太简单了。
使用defaults domains可能会发现一些运气,它允许您放置一小部分数据"外部"正常的默认区域。但这似乎也超出了你的需要。
另一个选项是make your own plist,然后将其保存到iCloud。
答案 4 :(得分:0)
使用此方法保存数据:
func saveIMEI(key: String, data: String) -> OSStatus {
let query = [
kSecClass as String : kSecClassGenericPassword as String,
kSecAttrAccount as String : key,
kSecValueData as String : data ] as [String : Any]
SecItemDelete(query as CFDictionary)
return SecItemAdd(query as CFDictionary, nil)
}
使用它来加载数据:
func loadIMEI(key: String) -> String? {
let query = [
kSecClass as String : kSecClassGenericPassword,
kSecAttrAccount as String : key,
kSecReturnData as String : kCFBooleanTrue,
kSecMatchLimit as String : kSecMatchLimitOne ] as [String : Any]
var dataTypeRef: AnyObject? = nil
let status: OSStatus = SecItemCopyMatching(query as CFDictionary, &dataTypeRef)
if status == noErr {
return dataTypeRef as! String?
} else {
return nil
}
}