ios - 在 iOS9 中使用 "sysctlbyname(...)"标志调用 "hw.machine"

标签 ios sysctl ios-9-beta3

在 WWDC 2015 session “703 隐私和您的应用”之后,使用 sysctl 进行了更改。现在我们将无法再调用 kern.prockern.procargskern.procargs2 并查看来自任何其他进程的数据然后是自己。这是 Apple 非常合法的隐私强化措施。

任何人都可以确认在 iOS9 中允许使用 hw.machine 调用 sysctlbyname(...) 来获取准确的设备名称并且不受上述限制的影响吗?

最佳答案

是的,我已经在 iPhone5 中使用 Xcode7 beta5 进行了测试(安装了 iOS9 beta5,不是模拟器)。

+(NSString *) getDeviceModel {
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *model = malloc(size);
    sysctlbyname("hw.machine", model, &size, NULL, 0);
    NSString *deviceModel = [NSString stringWithCString:model encoding:NSUTF8StringEncoding];
    free(model);
    return deviceModel;
}

返回值是“iPhone5,2”。所以我认为设备名称不受“sysctl”函数限制的影响。

关于ios - 在 iOS9 中使用 "sysctlbyname(...)"标志调用 "hw.machine",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183490/

相关文章:

iOS 9 - App Transport Security 不会加载 XML 文件

iphone - 使用 Storyboard时单元测试 cellForRowAtIndexPath

ios - UILongPressGestureRecognizer 识别其 View 外的触摸

ios - 为什么我的 UI 会在我明确离开返回主线程时更新

linux - 仅为我自己禁用和重新启用地址空间布局随机化

linux - 为什么 "echo l >/proc/sysrq-trigger"调用跟踪输出总是相似的?

ios - GLSL ES 精度错误和溢出

linux-kernel - Linux 和 KERN_PROC

ios - 找不到 -lCloudinary 的库