簡體   English   中英

如何在 iOS 設備中獲取唯一 ID?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM