如何在 iOS8 中使用 IOKit 获取设备的序列号作为 IOPlatformSerialNumber 给出 nil 值

2023-12-02

我想知道如何使用获取设备的序列号IOKit在iOS8中?我用了UIDevice+serialNumber我可以在 iOS 6 和 7 中获取序列号。在 iOS 8 中,值为platformSerialNumber来了nil在下面一行中:

CFTypeRef platformSerialNumber = IORegistryEntryCreateCFProperty(platformExpertDevice,CFSTR("IOPlatformSerialNumber"), kCFAllocatorDefault, 0);

我在用 :https://gist.github.com/0xced/566994

注意:我的应用程序不会进入应用程序商店,它是内部的。所以我正在寻找更具体的永远不会改变的东西,无论是字符串还是整数


从 iOS 8 开始,硬件信息(例如序列号)受到保护。如果您想检索此值,则必须使用私有权利签署您的应用程序。我不确定是否可以在企业应用程序中使用私有权利,它们当然不能用于App Store应用程序,但这个问题带有越狱标签,所以我将提供一个解决方案。

如果您希望使用序列号来跟踪您公司拥有的设备,我建议您利用 Apple 移动设备管理 (MDM) 等服务。这使您可以访问有关设备的大量信息,并允许您远程管理它们。

如果您只是寻找一个永远不会因其他目的而改变的标识符,我建议您使用设备的 UDID。我能够在没有权限的情况下在我的设备上获取此内容,但这可能是由于我的手机已越狱。其他人告诉我,事实上,权利是必需的。有关这方面的更多信息可以在iPhone开发维基.

Code:

- (NSString *)udid
{
    void *gestalt = dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_GLOBAL | RTLD_LAZY);
    CFStringRef (*MGCopyAnswer)(CFStringRef) = (CFStringRef (*)(CFStringRef))(dlsym(gestalt, "MGCopyAnswer"));
    return CFBridgingRelease(MGCopyAnswer(CFSTR("UniqueDeviceID")));
}

权利:

<key>com.apple.private.MobileGestalt.AllowedProtectedKeys</key>
<array>
    <string>UniqueDeviceID</string>
</array>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iOS8 中使用 IOKit 获取设备的序列号作为 IOPlatformSerialNumber 给出 nil 值 的相关文章

随机推荐

  • 如何在 AngularJS 中以编程方式触发表单提交?

    从 Angular 的文档可以看出ngSubmit是提交表单的首选方式 所有待处理的操作都会立即完成并且 submitted标志也被设置 而听ngClick事件不具有相同的效果 现在我需要提交一个带有热键的表单 其中包含以下所有优点ngSu
  • 对于 asm 语句中的临时寄存器,我应该使用 clobber 还是虚拟输出?

    正如这个问题的标题中提到的 当我修改 asm 语句中的一些寄存器时 出于临时原因 在 clobber 和 dummy 输出之间哪个选项更好 例如 我在中实现了两个版本的交换功能link 并发现两个版本生成相同数量的输出指令 我应该使用哪个版
  • R 将多个虚拟变量列合并为 1

    我正在尝试合并汽车数据框架 插入符号包 中的几列 敞篷车 轿跑车 掀背车 轿车 旅行车 列具有虚拟变量 我想创建 1 个名为 type 的列 列名称取决于车辆类型 library caret data cars head cars coln
  • 编译时检查某些属性

    给出以下 scala 代码 sealed trait Color case object Red extends Color case object Blue extends Color sealed trait Car def isBro
  • 单选按钮不能反映模型的值

    我有一个用于类的剑道网格 并且对于该类 我构建了一个编辑器模板来为其中一个字段生成单选按钮 此单选按钮不反映属性的值 并且始终false 尽管我已经通过将其打印在表格上检查了该值 并且我确信它是true 如果我为该字段设置默认值 则单选按钮
  • 简单的 OpenCV 项目 - 检测和跟踪网球

    我有一个项目 需要使用 OpenCV 检测网络摄像头上的物体 网球 并在我将其滚过桌子时跟踪它以获得奖励积分 我没有太多运气找到这方面的信息 因为我使用的是 OpenCV 2 4 C 并且很多信息都在旧的 OpenCV 版本中 我已经阅读了
  • 使用 golang 对 Google 应用引擎数据存储进行“IN Array”查询

    有没有办法进行查询ids int64在数据存储上 我已尝试以下方法但无济于事 错误输出 q datastore NewQuery Category Filter Id IN ids 只是让我获得数据存储中的所有类别 for id range
  • 循环遍历所有表并删除记录

    我是 MsSql 的新手 我不确定这是否可以完成 但我想在我想要继续当前流程之前我会问一下 我需要创建一个脚本来循环访问数据库中的所有表并删除 CorporationId xxx 的行 有一些表没有此列 但在我的约 50 个表中 只有一两个
  • 使用select语句更新查询子查询返回多于1行的解决方案

    您好 我有一个查询 其中我使用 select 语句编写了更新语句 但不幸的是 子查询返回的错误超过 1 行 我知道错误出在哪里 但我不知道同样的解决方案 谢谢 这是查询 UPDATE adsetest dashboard widget us
  • 在 Jetty 中使用 ResourceHandler 和自定义处理程序时,根请求出现 403 错误

    在 嵌入式 Jetty 中 我尝试使用 ResourceHandler 来提供静态文件 并使用自定义处理程序来响应动态请求 基于这一页我有一个如下所示的设置 public static void main String args throw
  • 将子进程的 stdin 和 stdout 重定向到管道

    编辑 解决办法是 int c1 dup2 pipes 0 1 STDOUT FILENO int c2 dup2 pipes 1 0 STDIN FILENO setvbuf stdout NULL IONBF 0 将stdout设置为非缓
  • 在网络浏览器上使用 .otf 字体

    我正在做一个需要在线试用字体的网站 我拥有的字体都是 otf 有没有办法嵌入字体并让它们在所有浏览器上运行 如果没有 我还有什么其他选择 您可以实施您的OTF使用 font face 的字体 例如 font face font family
  • 将数据网格绑定到数据读取器

    我希望能够在文本框中输入 SQL 并在 WPF 数据网格中显示结果 我想从一个开始SqlDataReader 并设置数据网格的ItemsSource至数据读取器 using var cmd conn CreateCommand cmd Co
  • type(list[0]) 返回 pynput.keyboard._win32.KeyCode

    我的问题是如何pynput返回数据 我希望你会这么说 所以我想做的是让监听器记录键盘输入 然后使用添加到列表中的字母来生成单词中的字符串 不过 这些字母似乎不是字符串 相反 它们返回为pynput keyboard win32 KeyCod
  • 在 Python 中使用 mysql.connector 处理格式参数失败

    我不明白这个插入语句我做错了什么 我收到的错误是 Failed processing format parameters s err mysql connector errors ProgrammingError Failed proces
  • Inno Setup [Code] 部分变量到 [Registry]

    我的 Inno 安装程序有问题 我正在使用分辨率检测脚本 Code 此处的部分 INNO设置 如何获取主显示器的分辨率 现在我想把xres and yres价值观 Registry 我的安装程序的部分如下所示 Root HKCU Subke
  • C# NPOI 将单元格样式设置为文本/字符串 1-19 格式化为日期/禁用任何格式

    我正在创建一个Excel 当我编写一些值示例1 19时 当我打开Excel文档时 我看到1 19 但是如果我单击它 那么Excel会尝试将其格式化为日期 有没有办法强制工作表不使用任何公式或格式 我查了一下 数据格式是字符串 private
  • Android:即使我在 DatePicker 之外触摸,DatePicker 也会设置值

    我有一个 TextView 当我触摸 TextView 时 它会调用 Date 和 TimePicker 首先 我显示 DatePicker 一旦选择了日期 我就可以设置该值 设置值后 我将从 TimePicker 获取时间 就像 Date
  • 如何在 Stripe (Rails) 中创建费用和客户

    我正在构建一个基于订阅的应用程序 我想通过 Stripe 订阅向客户收费 我正在尝试在提交表单后创建客户和费用 然而 只创建了代币 而不创建费用和客户 因此 表单成功通过 但在 Stripe 仪表板中 测试费用和客户不存在 这是我的控制器
  • 如何在 iOS8 中使用 IOKit 获取设备的序列号作为 IOPlatformSerialNumber 给出 nil 值

    我想知道如何使用获取设备的序列号IOKit在iOS8中 我用了UIDevice serialNumber我可以在 iOS 6 和 7 中获取序列号 在 iOS 8 中 值为platformSerialNumber来了nil在下面一行中 CF