對於內部應用程序,我們使用以下代碼UIDevice+serialNumber來獲取設備序列號。 但是,似乎在iOS 8中,註冊表項「IOPlatformSerialNumber」爲空。 可以通過其他方式獲取序列號嗎?獲取iOS 8設備的序列號
回答
Apple設備的序列號可在設置 - >常規 - >關於 - >序列號下找到。
問題在於如何以編程方式獲取此內容,而不是通過設置。 – 2014-09-19 05:53:29
答:不可以
目前有浮動的解決方案圍繞濫用.mobileconfig,但他們補充由於其他問題的性質。
UUID被刪除的原因。請參閱2011年美國國會的有關隱私和蘋果召喚的新聞,以瞭解爲什麼必須改變這一點。 http://arstechnica.com/apple/2011/04/apple-google-asked-to-join-judiciary-hearing-on-mobile-device-privacy/
濫用底層行軍端口獲取設備序列號作爲UUID的替代不是解決方案。現在濫用移動配置,並猜測將工作多久。
您有很多體面的方式來處理您以前使用設備標識的任何情況。特別是在擁有加密技術和MDM的企業環境中,絕對沒有必要跟蹤這樣的設備。
正如Helger所述,由於安全/隱私的原因,UDID在iOS 6+中不再可用。相反,使用identifierForVendor
或advertisingIdentifier
請檢查UDID Replacement APIs
對於iOS 8+
+ (NSString *)deviceUUID
{
if([[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]])
return [[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]];
@autoreleasepool {
CFUUIDRef uuidReference = CFUUIDCreate(nil);
CFStringRef stringReference = CFUUIDCreateString(nil, uuidReference);
NSString *uuidString = (__bridge NSString *)(stringReference);
[[NSUserDefaults standardUserDefaults] setObject:uuidString forKey:[[NSBundle mainBundle] bundleIdentifier]];
[[NSUserDefaults standardUserDefaults] synchronize];
CFRelease(uuidReference);
CFRelease(stringReference);
return uuidString;
}
}
您可以使用identifierForVendor
後存儲他們鑰匙圈和以後使用。因爲重新安裝應用程序時鑰匙串的值不會更改。
我曾經爲此使用Open UDID。不知道它是否仍然有效。
我知道UUID,謝謝。但是,我的問題是關於如何獲取序列號(不是UDID或UUID)。我會很好的使用私有API的解決方案,因爲這個應用程序是通過企業許可證分發的。 – quentinadam 2015-10-02 11:06:08
從iOS 8開始,IOPlatformSerialNumber屬性被刪除,現在檢索其值的調用返回nil。對不起,如果我誤解了。 – iAhmed 2015-10-02 12:01:49
在ObjC中獲取uuid最簡單的方法是:'[[NSUUID UUID] UUIDString]'。也沒有使用'@ autoreleasepool'和'synchronize'的目的。分解變量'[NSUserDefaults standardUserDefaults]'和[[NSBundle mainBundle] bundleIdentifier]'可以簡化代碼並減少拼寫錯誤的可能性。對於代碼安全性來說,最好的做法是總是使用大括號「'{}'」和所有'if'語句。 – zaph 2015-10-02 13:42:43
iOS中不再可能直接檢索設備序列號。
但是,如果它只是一個企業內部的應用程序,這是我工作的公司將要實現的是:
在設備配置,複製序列號和設置設備名稱爲序列號。
然後使用Apple的UIDevice API來檢索設備名稱。
- 1. 你如何獲得iOS 8的設備序列號?
- 2. 設備序列號
- 3. 讀取USB設備序列號在C#
- 4. 獲取ttyUSB0上的設備序列號(Ubuntu)
- 5. Sharepoint 2007和iOS 8設備
- 6. 無法獲取設備令牌用於運行iOS 8+(APNS)
- 7. 如何以編程方式獲取設備序列號?
- 8. 如何從iserialnumber獲取USB設備序列號?
- 9. iOS設備的標籤號
- 10. addSubview - iOS設備8 VS iOS版9
- 11. 從設備中檢索序列號
- 12. 獲取藍牙上的可用設備列表Windows Phone 8
- 13. 獲取iOS設備的焦距
- 14. 如何獲取死iOS設備的UDID?
- 15. 獲取BlackBerry設備的電話號碼
- 16. 獲取設備的電話號碼
- 17. 獲取android設備的代號
- 18. 獲取Android設備的電話號碼
- 19. 如何獲取iOS設備型號(例如A1530)?
- 20. 爲什麼iOS設備同時擁有UDID和序列號?
- 21. 在iOS中獲取設備信息?
- 22. React Native獲取ios設備語言
- 23. 獲取iOS設備上當前活動進程的列表
- 24. 獲取xargs的序列號
- 25. 如何從iOS設備(如iPhone和iPad)獲取或獲取設備視頻?
- 26. 獲取設備信號強度
- 27. 使用UIAutomation獲取設備型號?
- 28. UWP - 如何獲取設備型號
- 29. Api來讀取iOS設備上的日誌8
- 30. ios 8設備定位風景
你的意思是,你想要設備ID/UDID。?對。? – 2014-09-19 04:33:31
您可以創建一個唯一的隨機ID來標識設備,除非您重置設備,否則它不會更改。如果你想實現這個我可以提供代碼。 – souvickcse 2014-09-19 06:33:10
我想要實際的序列號。這不適用於應用商店應用,它適用於內部應用。我們需要串行代碼而不是UUID,因爲這是通過移動設備管理與用於管理應用程序的序列代碼鏈接的。 – quentinadam 2014-09-19 08:21:29