骚年你要不要UUID?(iOS)
[[[UIDevice currentDevice]identifierForVendor] UUIDString];
和
[NSUUID UUID].UUIDString;
这两个~ 都会变!
同一个开发者的app会公用一个uuid,
但是这个开发者的app被删光的时候, 再安装他的任意app, 生成的uuid都是会变的~
结论的话 只能生成UUID后用钥匙串存啦
然后有机智的骚年担心了: iCloud这个东西可以同步啊, 别的设备不也拿到了吗, 那还算什么唯一
这个钥匙串啊, 可以设置所存数据只用在单一设备上, 备份也转移不走
钥匙串的API还是不友好啊, 墙裂推荐一个 KeychainAccess
他是swift写的, 我们只要把他的这个swift文件(1个)拷到我们项目里就可以, 不用什么pod\carthage什么的
如果oc项目要用的话, 可以新建个XXManager.swift文件, 然后把KeyChainAccess的代码往里面一拷贝嘿嘿
用自己的奇思妙想封装一下, 如下图
class KCManager: NSObject {
func checkUUID() -> Bool {
let keychain = Keychain(service: "你的bundleID").accessibility(.alwaysThisDeviceOnly)
let uuidres = keychain["随便来个键名"]
if uuidres == nil{
return false
}else{
return true
}
}
func writeUUID(uuid: String) -> Void {
let keychain = Keychain(service: "你的bundleID").accessibility(.alwaysThisDeviceOnly)
keychain["随便来个键名"] = uuid
}
func readUUID() -> String {
let keychain = Keychain(service: "你的bundleID").accessibility(.alwaysThisDeviceOnly)
return keychain["随便来个键名"]!
}
}
然后就随便折腾啦啦啦啦, OC桥接swift之后编译变慢也是结果之一呵呵呵呵呵