2014-02-15 260 views
3

我需要獲取唯一設備ID以填充數據庫中的唯一用戶標識。我已經使用下面的代碼來獲取它。如何以編程方式從ios7設備獲取未更改的設備ID

NSString *strApplicationUUID= [[[UIDevice currentDevice] identifierForVendor] UUIDString];

但是當我重新安裝應用程序,該UUID正在改變所有的時間。但據我所知,設備ID從不改變。對於我用下面的代碼與第三方SSKeychain保存和檢索舊的UDID:

NSString *Appname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]; 
    NSString *strApplicationUUID = [SSKeychain passwordForService:Appname account:@"manab"]; 
    if (strApplicationUUID == nil) 
    { 
     strApplicationUUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; 
     [SSKeychain setPassword:strApplicationUUID forService:Appname account:@"manab"]; 
    } 

現在的問題是,當該應用程序的版本,然後再次改變即應用2.0格式的應用程序1.0版UDID改變了。所以邏輯清楚地告訴我,我一直沒有得到唯一的UDID,我只是把UDID當成供應商或應用程序的基礎。

如何通過編程方式獲取?有沒有其他的方法可以獲得,請讓我看看正確的方向。

+0

您應該閱讀該文章以獲取有關UDID的一些信息http://blog.appsfire.com/udid-is-dead-openudid-is-deprecated-long-live-advertisingidentifier/ – MP23

+0

UDID不再可用於iOS 7(蘋果一直告訴開發者它已經從iOS 5開始棄用)。如果用戶從供應商卸載所有應用程序,然後重新安裝它們,則'identifierForVendor'被重置。如果您需要唯一標識用戶,則需要使用用戶名和密碼。 –

+0

嗨機器人貓,你能告訴我如果有人需要識別他的設備,那麼他怎麼能做到這一點,必須有一個有效的方式,因爲... –

回答

6

我已經通過使用advertisingIdentifier解決了這個問題。

正如我所看到那裏advertisingIdentifier是

「的字母數字字符串唯一的每個設備,...」

對於我已經用它作爲唯一標識符(儘管它用於服務廣告的 )。

我的代碼是:

-(NSString*)UniqueAppId 
{ 
    NSString *Appname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]; 
    NSString *strApplicationUUID = [SSKeychain passwordForService:Appname account:@"manab"]; 
    if (strApplicationUUID == nil) 
    { 
     strApplicationUUID = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; 
     [SSKeychain setPassword:strApplicationUUID forService:Appname account:@"manab"]; 
    } 
    return strApplicationUUID; 
} 

,只是需要作爲

[self UniqueAppId]; 
+2

嗨manab ... AdvertisingIdentifer是獨一無二的,我同意..但如果您使用AdvertisingIdentifer,並且您沒有顯示任何iAD或iAD未正確加載Apple將拒絕您的應用程序 –

1

advertisingIdentifier時是因爲它不改變應用更新或重新安裝一個不錯的選擇調用它。

但是,當用戶重置設備時,它也會發生變化,因此您可能需要根據自己的要求重新考慮它。

對於ref。

How to get the UDID in iOS 6 and iOS 7

CFUUID Vs. advertisingIdentifier Vs. identifierForVendor

在我來說,我更願意使用用戶的電子郵件地址作爲一個唯一的ID。因此,只有當用戶自己改變了他的唯一身份時,用戶纔會得到他的數據或者在系統上識別。:-)

問候

0

在Objective-C

如果u想要得到的唯一ID在IOS 7及以上的下面是使用:

首先創建自己唯一的ID和你有to save in the keychain. 現在use the vendor ID,它將被重置,如果同一供應商的所有應用程序都從設備中刪除。

相關問題