2014-03-19 40 views
3

自iOS7以來,蘋果公司已棄用並且無法使用該屬性-uniqueIdentifier。其他屬性-identifierForVendor-advertisingIdentifier存在很大的問題,即在卸載並重新安裝應用程序後,它們會更改值。
我需要該值來唯一標識連接到服務器的設備。
該應用程序將僅在內部使用企業帳戶進行分發,因此審查過程沒有問題。iOS 7訪問企業應用程序中的UUID值(不適用於AppStore)

有沒有私人的方法來獲取它?


[使用一些測試UPDATE]
正如大衛說:我用標識符廠商iOS7.1設備上這裏有一些結果從我的測試。

  • 應用程序安裝完畢後:28FD42B6-A993-4602-A988-69E375A1F913
  • 查殺程序後:28FD42B6-A993-4602-A988-69E375A1F913
  • 刪除並重新安裝應用程序後: 28FD42B6- A993-4602-A988-69E375A1F913
  • 系統後恢復和重新安裝應用程序: 4948F77F-3D41-4933-B2F0-C4DCB529C7CC
  • 後從系統之前所做的備份還原恢復: 28FD42B6-A993-4 602-A988-69E375A1F913
+0

望着文檔多一些只要設備上安裝了來自同一供應商的任何應用程序(基於應用程序ID),則UUID只能保證一致。對於你想要的服務器登錄最少的情況,這種可能性並不是很好。 –

回答

3

您應該可以使用[UIDevice identifierForVendor]達到您的目的。根據文檔:

該屬性的值對來自同一設備上運行的同一供應商的應用程序是相同的。

基於此,我不認爲如果您刪除並重新安裝應用程序,值應該改變。一些快速測試證實,它通過刪除/安裝週期持續存在。

編輯:

它看起來像identifierForVendor只有通過刪除持久iOS上的7 /安裝,所以在iOS 7的iOS 6和identifierForVendor使用UNIQUEIDENTIFIER爲:

@implementation UIDevice (persistentDeviceIdentifier) 

-(NSString*)persistentDeviceIdentifier 
{ 
    if([self respondsToSelector:@selector(uniqueIdentifier)]) 
     return [self performSelector:@selector(uniqueIdentifier)]; 
    else 
     return [[self identifierForVendor] UUIDString]; 
} 

@end 
+0

大衛非常感謝......我還會檢查更新和系統還原期間 – Andrea

+0

更新了一些測試的問題 – Andrea

相關問題