[英]How to get unique id in iOS device?
我在服務器端使用 mac 地址識別 iOS 設備。 當使用 iOS 7 運行我的應用程序時,無法檢索到正確的 mac 地址。 或者我用過
NSUUID *oNSUUID = [[UIDevice currentDevice] identifierForVendor];
[strApplicationUUID setString:[oNSUUID UUIDString]];
財產。 但是這個值也會在每次新安裝應用程序后發生變化。 現在我想在服務器端檢測特定設備? 如何在 iOS 中為每台設備獲取一些唯一 ID?
您無法再獲得每台設備的唯一 ID。 identifierForVendor
是最好的。 Apple 已系統地禁用識別特定設備,以便營銷人員無法傳遞用戶的 ID。
要將標識符 ID 作為字符串獲取,您可以使用
let deviceId = UIDevice.current.identifierForVendor?.uuidString
如果您想要一個通用 ID,那么您可以選擇使用advertisingIdentifier
。 但是,如果用戶在其設備設置中限制了廣告跟蹤,則該值將簡單地返回全零。
import AdSupport
let identifierManager = ASIdentifierManager.shared()
if identifierManager.isAdvertisingTrackingEnabled {
let deviceId = identifierManager.advertisingIdentifier.uuidString
}
NB Apple 建議此代碼僅供構建廣告框架的公司使用,而不是應用程序開發人員自己使用。 如果您在代碼中將其用於與廣告無關的目的,請准備好讓您的應用被拒絕。
獲取設備 ID 的最佳方式是identifierForVendor
UIDevice *device = [UIDevice currentDevice];
NSString *currentDeviceId = [[device identifierForVendor]UUIDString];
更新
對於 Swift 4.1 使用
UIDevice.current.identifierForVendor?.uuidString
獲取設備 ID
斯威夫特 3
let device_id = UIDevice.currentDevice().identifierForVendor?.UUIDString
斯威夫特 4:
let device_id = UIDevice.current.identifierForVendor!.uuidString
在 Swift 3.x 中獲取設備 ID
let deviceId = UIDevice.current.identifierForVendor?.uuidString
你可以使用這個庫: https : //github.com/fabiocaccamo/FCUUID
請查看持久性部分中的表格。 uuidForDevice
將涵蓋大部分需要的情況,它是舊版本 iOS 中 udid 的最佳替代品。
Readme
中的示例在 Objective-C 中,但它也適用於 Swift。 從 Swift 首次發布到現在(Swift 4.1),我一直在使用它。
對於 Swift 5
let deviceId = UIDevice.current.identifierForVendor?.uuidString
您必須像這樣使用 UIDevice 的identifierForVendor
方法:
let deviceId = UIDevice.current.identifierForVendor?.uuidString
但正如此處詳細解釋的那樣: https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor ID 在每次重新安裝應用程序(來自 AppStore)時都會更改。
避免這種情況的一種簡單解決方案是使用鑰匙串來存儲一旦獲得的 deviceId。 如果鑰匙串項目不存在 - 第一次安裝*就是這種情況 - 如上所述獲取 deviceId 並將其存儲在鑰匙串中。
*) 這是 iOS 所以必須有一些陷阱:如果設備被重置或從備份中恢復,鑰匙串項目可能會消失。 所以這里沒有 100% 的機會,但由於這種情況不太可能發生,所以這是您的最佳選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.