使用iPhone或iOS设备的唯一标识符

Man*_*ann 4 iphone ios

我正在订购预订应用程序.我需要从iPhone/iOS设备向服务器发送一个唯一的密钥.

我可以使用iPhone的GUID吗?即[UIDevice uniqueIdentifier]是否合法?法律意味着苹果会接受吗?

用于唯一标识iPhone或iOS设备的最佳属性是什么?如果没有,那么唯一识别设备的另一种方式是什么.

其实我需要预订参考编号.应用程序生成 必须是独一无二的

Man*_*anu 5

Apple已宣布将于2013年5月开始拒绝使用UDID跟踪用户行为的应用程序

这是UDID的替代方案:

您可以创建一个UIApplication,UIDevice类别或者您喜欢这样的类别(ARC示例)

@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
Run Code Online (Sandbox Code Playgroud)

UUID()就是这个功能

NSString* UUID () {

    CFUUIDRef uuidRef = CFUUIDCreate(NULL);
    CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
    CFRelease(uuidRef);
    return (__bridge NSString *)uuidStringRef;
}
Run Code Online (Sandbox Code Playgroud)

这将生成一个存储在NSUserDefault中的唯一标识符,以便在应用程序需要时重复使用 - 此标识符将独立于应用程序安装而不是设备,但可用于跟踪订阅APN服务等的设备数量...

之后,您可以这样使用它:

    NSString *uuid = [[UIApplication sharedApplication] getUUID];
Run Code Online (Sandbox Code Playgroud)