首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取iOS 8上设备的序列号

获取iOS 8上设备的序列号
EN

Stack Overflow用户
提问于 2014-09-19 12:12:45
回答 4查看 9.1K关注 0票数 9

对于内部应用程序,我们使用以下代码UIDevice+serialNumber来获取设备序列号。然而,在iOS 8中,注册表项"IOPlatformSerialNumber“似乎是空的。是否可以通过其他方式获得序列号?

EN

回答 4

Stack Overflow用户

发布于 2015-10-02 15:16:23

答案是:不。

目前围绕滥用.mobileconfig有一些浮动的解决方案,但由于它们的性质,它们增加了其他问题。

删除UUID是有原因的。看看有关隐私的新闻和2011年美国参议员对苹果的召唤,以了解为什么必须改变这一点。http://arstechnica.com/apple/2011/04/apple-google-asked-to-join-judiciary-hearing-on-mobile-device-privacy/

滥用底层的三月端口来获取设备序列号作为UUID的替换不是解决方案。现在滥用移动配置也是如此,猜猜它会工作多久。

您有很多像样的方法来处理以前使用设备标识的任何情况。特别是在企业环境中,如果您使用加密技术,并且MDM绝对没有必要跟踪这样的设备。

票数 2
EN

Stack Overflow用户

发布于 2016-09-13 23:48:50

在iOS中,不再能够直接检索设备序列号。

然而,如果这仅仅是一个内部企业应用程序,我工作的公司将实现以下内容:

在设备配置过程中,复制序列号并将设备名称设置为序列号。

然后使用苹果的UIDevice API检索设备名称。

票数 1
EN

Stack Overflow用户

发布于 2015-10-02 15:41:15

正如赫尔格如上所述,由于安全/隐私原因,iOS 6+中不再提供UDID。请改用identifierForVendoradvertisingIdentifier请检查UDID Replacement APIs

对于iOS 8+

代码语言:javascript
复制
+ (NSString *)deviceUUID
{
if([[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]])
    return [[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]];

@autoreleasepool {

    CFUUIDRef uuidReference = CFUUIDCreate(nil);
    CFStringRef stringReference = CFUUIDCreateString(nil, uuidReference);
    NSString *uuidString = (__bridge NSString *)(stringReference);
    [[NSUserDefaults standardUserDefaults] setObject:uuidString forKey:[[NSBundle mainBundle] bundleIdentifier]];
    [[NSUserDefaults standardUserDefaults] synchronize];
    CFRelease(uuidReference);
    CFRelease(stringReference);
    return uuidString;
 }
}

您可以在那之后使用identifierForVendor,将它们存储到密钥链中,以便以后使用。因为重装app时,keychain的值不会发生变化。

我过去常常使用Open UDID来实现这一目的。不知道它还能不能用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25926251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档