微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

唯一设备标识符

如何解决唯一设备标识符

| 每个Apple设备(iPad / iPhone / iPod)在其使用范围内是否只有一个唯一的标识符?以下代码将始终返回该标识符吗?
[[UIDevice currentDevice] uniqueIdentifier];
苹果公司是否允许在已部署的应用程序中使用此方法?     

解决方法

        UDID(uniqueidentifier)是终生的,但是,不确定苹果是否高兴您调用该方法来检索它。     ,        苹果公司宣布,自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
UUID()是此函数
NSString* UUID () {

    CFUUIDRef uuidRef = CFUUIDCreate(NULL);
    CFStringRef uuidStringRef = CFUUIDCreateString(NULL,uuidRef);
    CFRelease(uuidRef);
    return (__bridge NSString *)uuidStringRef;
}
这将生成一个唯一的标识符,该标识符存储到NSUserDefault中,以便在应用程序需要时重复使用-该标识符将与应用程序唯一相关,而不是安装到设备上,但可用于例如跟踪有关设备订阅APN服务的数量等... 之后,您可以通过以下方式使用它:
    NSString *uuid = [[UIApplication sharedApplication] getUUID];
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。