using a unique identifier of iPhone or iOS device
我正在制作一个订单预订应用程序。我需要从iPhone/iOS设备向服务器发送一个唯一的密钥。
我可以使用iphone的guid吗?即[uidevice uniqueidentifier]是否合法?法律手段苹果会接受吗?
唯一标识iPhone或iOS设备的最佳属性是什么?如果没有,那么唯一标识设备的另一种方法是什么?
实际上,我需要由应用程序生成的预订参考号。必须是独一无二的。
苹果已宣布,2013年5月将开始拒绝使用UDID跟踪用户行为的应用程序。
这是UDID的替代方案:
您可以创建一个uiapplication、uidevice或您喜欢的类似的类别(示例弧)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | @interface UIApplication (utilities) - (NSString*)getUUID; @end @implementation UIApplication (utilities) - (NSString*)getUUID { NSUserDefaults *standardUserDefault = [NSUserDefaults standardUserDefaults]; static NSString *uuid = nil; // try to get the NSUserDefault identifier if exist if (uuid == nil) { uuid = [standardUserDefault objectForKey:@"UniversalUniqueIdentifier"]; } // if there is not NSUserDefault identifier generate one and store it if (uuid == nil) { uuid = UUID (); [standardUserDefault setObject:uuid forKey:@"UniversalUniqueIdentifier"]; [standardUserDefault synchronize]; } return uuid; } @end |
uuid()是这个函数吗?
1 2 3 4 5 6 7 | NSString* UUID () { CFUUIDRef uuidRef = CFUUIDCreate(NULL); CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef); CFRelease(uuidRef); return (__bridge NSString *)uuidStringRef; } |
这将生成存储在nsuserdefault中的唯一标识符,以便在应用程序需要时重用-此标识符将是唯一的,与应用程序安装无关,但可以用于跟踪设备订阅的APN服务等的数量。
之后,您可以这样使用它:
1 | NSString *uuid = [[UIApplication sharedApplication] getUUID]; |
没有我知道的guid,你是说
创建UUID:包含UUID的字符串。用ASCII表示的UUID的标准格式是用连字符标点的字符串,例如68753A44-4d6f-1226-9c60-0050e4c00067。
1 2 3 4 5 6 7 | + (NSString *)newUUID { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); return (NSString *)string; } |
我不会提及保密协议下的内容,但是尝试一下这个解决方案,因为作者宣称"它根据设备的MAC地址和捆绑标识符生成一个唯一的标识符。"但是要注意的是,越狱设备可以更改它们的MAC地址afaik。
iOS 6为供应商提供了标识,它可以在同一供应商的多个应用程序之间使用,尽管它标识了一个设备,但您可以将它与iCloud的密钥值存储结合使用,例如,在设备之间标识用户。
Ole Begemann在他的博客上很好地解释了这一切:http://oleb.net/blog/2012/09/udid-apis-in-ios-6/