2014-12-01 65 views
0

說我有一個應用程序 - 'MyApp' - 有沒有一種方法可以在'MyApp'中持續獲取設備標識符字符串?有沒有一種方法可以在應用程序中始終如一地識別用戶的設備?

即當用戶在特定設備上使用'MyApp'時,我可以調用API並始終返回相同的字符串?

+2

最接近的可能是https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/index.html#//apple_ref/doc/uid/TP40006902-CH3-SW49 – Jack 2014-12-01 17:02:59

回答

0

identifierForVendor將在安裝之間更改,最好使用CFUUIDCreate。

if ([[NSUserDefaults standardUserDefaults] valueForKey:@"UUID"] == nil) { 
    CFUUIDRef uuid = CFUUIDCreate(NULL); 
    NSString *uniqueIdentifier = (NSString*)CFBridgingRelease(CFUUIDCreateString(NULL, uuid)); 
    CFRelease(uuid); 
    [[NSUserDefaults standardUserDefaults] setObject:uniqueIdentifier forKey:@"UUID"]; 
} 

上述內容將在應用程序重新安裝後生效。

+0

這不能識別設備。如果您重置設備並重新安裝設備,則會創建一個新的GUID。 – Krumelur 2014-12-01 17:12:28

+1

>上述內容將在應用程序重新安裝後生效。 但不是設備擦拭。但有時會發生這種情況。我想,現在無法獲得真正一致的設備特定ID – mrvn 2014-12-01 17:12:57

+0

您可以使用MAC地址等從設備上創建自己的UDID,但這樣做不符合Apple禁止使用UDID的精神。而不是將UDID與MAC地址交換,您的實際要求是什麼。你真的需要一個不變的UDID嗎? – 2014-12-01 17:20:34

0

Apple可能會拒絕您的應用程序發送個人身份信息。使用廣告ID來代替:

#import <AdSupport/AdSupport.h> 

// Advertising ID 
ASIdentifierManager *adManager = [ASIdentifierManager sharedManager]; 
NSUUID *uuid = [adManager advertisingIdentifier]; 
NSString *stringRepresentation = uuid.UUIDString; 

只要確保你通過蘋果的UDID的使用,包括已檢查在設置「限制廣告跟蹤」用戶限制遵守的準則。

相關問題