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

时间:2014-09-19 04:12:45

标签: ios iphone ios8 iokit

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

4 个答案:

答案 0 :(得分:2)

答案:不。

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

UUID因某种原因被删除了。从2011年开始,查看美国Senat关于隐私和Apple召唤的消息,以了解为何必须更改。 http://arstechnica.com/apple/2011/04/apple-google-asked-to-join-judiciary-hearing-on-mobile-device-privacy/

滥用基础游行端口以获取设备序列号作为UUID的替换不是解决方案。现在同样滥用移动配置并猜测它将工作多长时间。

您有很多不错的方法可以处理之前使用过设备识别的任何情况。特别是在您拥有加密和MDM的企业环境中,绝对没有必要跟踪这样的设备。

答案 1 :(得分:1)

iOS中无法再直接检索设备序列号。

但是,如果只是内部企业应用程序,我工作的公司要实现的是:

在设备配置期间,复制序列号并将设备名称设置为序列号。

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

答案 2 :(得分:0)

正如Helger所述,出于安全/隐私原因,iOS 6+中不再提供UDID。相反,请使用identifierForVendoradvertisingIdentifier 请检查UDID Replacement APIs

适用于iOS 8 +

+ (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存储到钥匙串后使用public void desaparecer(final LinearLayout parent, View hijo, int espaciofinal) { parent.removeView(hijo); final LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)parent.getChildAt(0).getLayoutParams(); ValueAnimator animator = ValueAnimator.ofInt(params.height, espaciofinal); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { params.height= (Integer) valueAnimator.getAnimatedValue(); parent.getChildAt(0).requestLayout(); } }); animator.setDuration(300); animator.start(); } 并稍后使用。因为重新安装应用程序时钥匙串的价值不会改变。

我曾经为此目的使用Open UDID。不知道它是否仍然有效。

答案 3 :(得分:-10)

Apple设备的序列号可在设置 - >下找到。一般 - >关于 - >序列号。