尽管苹果公司并未出现在巴塞罗那的MWC(移动世界大会)上,但可以肯定的是,在进一步的iOS SDK中获取设备ID将被废弃。
我不明白为什么苹果要限制这个功能,但这不是重点。
我必须为我的应用程序准备一个替代方案,因为我的用户被识别并且被知道为更好地使用我的应用程序(例如,不需要登录或创建帐户)。而我确信我不是唯一一个这样的情况。
那么,有人知道从哪里获取设备ID的替代方法吗? 是否有其他唯一标识符,例如MAC地址? 您如何准备您的应用程序?
尽管苹果公司并未出现在巴塞罗那的MWC(移动世界大会)上,但可以肯定的是,在进一步的iOS SDK中获取设备ID将被废弃。
我不明白为什么苹果要限制这个功能,但这不是重点。
我必须为我的应用程序准备一个替代方案,因为我的用户被识别并且被知道为更好地使用我的应用程序(例如,不需要登录或创建帐户)。而我确信我不是唯一一个这样的情况。
那么,有人知道从哪里获取设备ID的替代方法吗? 是否有其他唯一标识符,例如MAC地址? 您如何准备您的应用程序?
更新
使用CFUUID生成UUID,然后在第一次启动时将其存储在KEYCHAIN中。可以像这样获取它...
NSString *uuid = nil;
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID) {
uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
[uuid autorelease];
CFRelease(theUUID);
}
苹果公司建议您不要通过uniqueIdentifier方法来区分设备,而应该按照应用程序的安装来区分。如果您坚持使用此方法,则明天他们可能会拒绝您的应用程序。希望这能对您有所帮助。
试试这个
- (NSString *)getDeviceID
{
NSString *uuid = [self gettingString:@"uniqueAppId"];
if(uuid==nil || [uuid isEqualToString:@""])
{
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID)
{
uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
[self savingString:@"uniqueAppId" data:uuid];
[uuid autorelease];
CFRelease(theUUID);
}
}
return uuid;
// this is depreciated
// UIDevice *device = [UIDevice currentDevice];
// return [device uniqueIdentifier];
}