zoukankan      html  css  js  c++  java
  • 如何唯一确定一台iOS设备

     如果你的iOS应用需要针对设备做特定的操作,或者需要硬件的信息来进行判定等等的,你就需要对iOS设备进行唯一性的判定。

          苹果设备有个先天的东西符合这个需求,UDID,这个东东用iTunes就可以看到,每个设备唯一。并且苹果提供了一个uniqueIdentifier的属性,可以用来获得这个值。代码看起来这样:

       [[UIDevicecurrentDevice]uniqueIdentifier];

           看起来真的不错,不过且慢高兴,问题是苹果在iOS5之后废除了这个API,也就是说如果你的设备运行在iOS5之后,这个API就不能用了。

          到iOS5之后,虽然这个UDID不能获得了,但大家伙找了另一条路来判定iOS设备——MAC地址,苹果没有直接提供API,但还是可以获得,应用可以正常的工作,上架。这段代码在《iOS上获得MAC地址》这篇blog里面列出了。

           大家又顺利的工作了一阵,直到iOS7横空出世,走到了大家跟前。——苹果通过技术手段让MAC的获取也不行了,每次都返回一个特殊固定的值。

           确定设备的需求仍然是存在的,苹果在iOS7里面也很贴心的给出了一条路,identifierForVendor,使用起来就是:

       [[UIDevicecurrentDevice]identifierForVendor];

      问题得到了解决,苹果在关上一扇门的时候打开了一扇窗,而且这个API估计苹果不会再次废弃了。不过,问题真的解决了么?没有,答案还是没有,如果你删除应用然后再次安装,这个identifierForVendor的值就变了!!!

       

       考虑到多种操作情形,删除应用重装,系统升级,系统还原,系统重刷,目前就没有可靠的办法来标识唯一性的设备了!但需求肯定是存在的,也实实在在放在那里,下面就拭目以待,看苹果怎么处理了。

  • 相关阅读:
    最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
    xcode6+ios8最新真机调试教程
    新手学习ios开发的辅助工具
    IOS事件传递之hitTest:withEvent
    <转>Singletons in Objective-C
    iOS机身振动提醒
    (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode
    对数组进行排序
    字符串去掉空格问题
    NSArray排序方法
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/9679406.html
Copyright © 2011-2022 走看看