2012-02-22 58 views
8

我在所有應用程序中都使用[[UIDevice currentDevice] uniqueIdentifier],Apple不允許再使用uniqueIdentifier。 我需要一些東西來代替uniqueIdentifier,我可以用它來識別用戶,即使用戶刪除了應用程序並重新安裝它(也讓我的應用程序被蘋果認可)。方法[[UIDevice currentDevice] uniqueIdentifier]已不再被允許,我需要替代品

感謝

+3

可能複製 - [唯一標識符的UIDevice棄用 - 什麼現在要做的(http://stackoverflow.com/q/6993325/194544) – beryllium 2012-02-22 14:06:27

回答

12

documentation建議什麼在本節做。

特別注意事項
不要使用唯一標識符屬性。要創建特定於您的應用程序的唯一標識符,可以使用 調用CFUUIDCreate函數來創建UUID,並使用NSUserDefaults類將其寫入 默認值數據庫。

爲了確保唯一標識符刪除你應該把它存放在keychain,而不是在NSUserDefaults的應用程序後,仍然存在。使用鑰匙串,您還可以使用keychain access groups在同一設備上的所有應用程序中共享相同的唯一ID。這種方法可以防止用戶在設備不再使用後錯誤地跟蹤用戶,並且可以在他們從備份中恢復的任何新iDevice上使用。

+0

你的意思是我可以添加到設備鑰匙串的UUID和刪除應用程序,當我再次安裝我檢索的價值,並再次使用它? – user784625 2012-02-22 14:12:35

+0

是的,鑰匙串項目保持不變(只要設備未被擦除並設置爲新設備),並且當您使用訪問組時,您可以允許其他應用程序訪問相同的鑰匙串值。 – Joe 2012-02-22 14:26:10

+0

還有一個問題,我可以使用MAC地址,並且仍然可以讓我的應用獲得蘋果的認可嗎? – user784625 2012-02-22 14:31:36

3

更新的iOS 7和之前:與digipeople的黑客

+ (NSString*)deviceModel 
{ 
    static NSString *device_model = nil; 

    if (device_model != nil) 
     return device_model; 

    struct utsname systemInfo; 
    uname(&systemInfo); 
    NSString *str = @(systemInfo.machine); 

    return device_model; 
} 
+0

此代碼的問題在於,每次在iOS 6或更高版本中調用該代碼時都會返回不同的值。要成爲'uniqueIdentifier'替代品,它需要持久。 – kamprath 2013-08-12 01:35:21

0

+ (NSString *)uniqueDeviceIdentifier 
{ 
    NSString *device_id = nil; 

    if ([[self deviceModel] isEqualToString:@"Simulator iOS"]) { 
     // static id for simulator 
     device_id = @"== your random id =="; 
    } 
    else if (CurrentIOSVersion >= 6.f) { 
     // iOS 6 and later 
     device_id = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; 
    } 
    else { 
     // iOS 5 and prior 
     SEL udidSelector = NSSelectorFromString(@"uniqueIdentifier"); 
     if ([[UIDevice currentDevice] respondsToSelector:udidSelector]) { 
      device_id = [[UIDevice currentDevice] performSelector:udidSelector]; 
     } 
    } 
    NSLog(@">>>>>> device_id: %@", device_id); 
    return device_id; 
} 

設備型號就可以透過。

修復它以避免應用程序崩潰。

systemId = [[NSUUID UUID] UUIDstring];

http://developer.apple.com/library/mac/documentation/Foundation/Reference/NSUUID_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUUID/UUIDString

相關問題