我的应用程序与iOS5和iOS6兼容。
到现在为止,我在使用时都没有问题:
NSString DeviceID = [[UIDevice currentDevice] uniqueIdentifier];
现在使用iOS7,并且uniqueIdentifier不再起作用,我更改为:
NSString DeviceID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
问题是,这不适用于iOS5。
如何实现与iOS5的向后兼容性?
我尝试了这个,没有运气:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000
// iOS 6.0 or later
NSString DeviceID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
#else
// iOS 5.X or earlier
NSString DeviceID = [[UIDevice currentDevice] uniqueIdentifier];
#endif
最佳答案
Apple的最佳和推荐选项是:
NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
适用于5.0以上的所有设备。
对于5.0,您必须使用uniqueIdentifier。最好检查是否可用:
if (!NSClassFromString(@"ASIdentifierManager"))
结合使用将为您提供:
- (NSString *) advertisingIdentifier
{
if (!NSClassFromString(@"ASIdentifierManager")) {
SEL selector = NSSelectorFromString(@"uniqueIdentifier");
if ([[UIDevice currentDevice] respondsToSelector:selector]) {
return [[UIDevice currentDevice] performSelector:selector];
}
//or get macaddress here http://iosdevelopertips.com/device/determine-mac-address.html
}
return [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
}
关于关于唯一标识符的iOS7应用与iOS5向后兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18770100/