[[[UIDevice currentDevice]identifierForVendor] UUIDString];
和
[NSUUID UUID].UUIDString;
這兩個~ 都會變!
同一個開發(fā)者的app會公用一個uuid,
但是這個開發(fā)者的app被刪光的時候, 再安裝他的任意app, 生成的uuid都是會變的~
結(jié)論的話 只能生成UUID后用鑰匙串存啦
然后有機(jī)智的騷年擔(dān)心了: iCloud這個東西可以同步啊, 別的設(shè)備不也拿到了嗎, 那還算什么唯一
這個鑰匙串啊, 可以設(shè)置所存數(shù)據(jù)只用在單一設(shè)備上, 備份也轉(zhuǎn)移不走
鑰匙串的API還是不友好啊, 墻裂推薦一個?KeychainAccess
他是swift寫的, 我們只要把他的這個swift文件(1個)拷到我們項(xiàng)目里就可以, 不用什么pod\carthage什么的
如果oc項(xiàng)目要用的話, 可以新建個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之后編譯變慢也是結(jié)果之一呵呵呵呵呵