2013-08-27 71 views
1

我需要以編程方式獲取iPhone的唯一編號。我知道蘋果會拒絕應用程序,如果我試圖獲得iPhone序列號。獲取iPhone的唯一編號

但是可能有一種方法可以獲得任意數量的iPhone,因此服務器可以區分一個設備。

+0

什麼樣的唯一的號碼?一個可以識別每個設備的號碼?使用MAC地址。 – Raptor

+0

在這裏看到這個問題的替代: http://stackoverflow.com/questions/15939819/udid-replacement – dna2

+0

你應該永遠不會[識別設備](http://triplesoftware.nl/2012/03/uniqueidentifier - 不贊成是一件好事/),但你應該確定用戶。另外從iOS 7開始,您根本無法識別設備。 – rckoenes

回答

3

對於每個iPhone,MAC地址是唯一的(iOS模擬器除外)。您可以獲取信息以識別設備。這question將引導你獲得MAC地址。但是,iOS7 disallows use of MAC address。因此,對於iOS 6或之前版本,您可以使用MAC地址;對於即將到來的iOS 7,您可以使用以下方法。

自iOS 6以來,Apple建議使用廣告標識,可在ASIdentifierManager類中找到。示例代碼:

NSUUID *uuid = [ASIdentifierManager advertisingIdentifier]; 
+0

這不適用於iOS 7,不能在iOS 7中使用設備識別號碼。所以沒有辦法做出這個未來的證明。 – rckoenes

+0

@PaulGalavic請參閱參考鏈接,不要在此重複代碼。 – Raptor

+0

@rckoenes已經在回答中提到 – Raptor

1

你看過identifierForVendor

https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor

蘋果描述爲:

唯一標識設備到應用的 供應商的字母數字字符串。

+1

請注意,如果用戶移除同一供應商的所有應用程序,則可以更改此號碼。同樣,不同廠商的所有應用程序都不會有相同的標識符。 – rckoenes

+0

這個數字在iOS7中可以嗎? –

+0

我無法找到Apple的源代碼 - 但我發現有幾個網站引用了iOS7的「新增功能」文檔,內容如下:「現在用於返回MAC地址的兩個低級網絡API返回固定值爲02:00:00:00:00:00所討論的API是sysctl(NET_RT_IFLIST)和ioctl(SIOCGIFCONF),使用MAC地址值的開發人員應該遷移到諸如 - [UIDevice identifierForVendor]之類的標識符。影響iOS 7上運行的所有應用程序。「 – James

0

你應該試試這個讓你的iPhone的UID:

NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];