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

top*_*sky 5 sysctl ios ios-9-beta3

在WWDC 2015会议"703隐私和您的应用程序"之后,使用了更改sysctl.现在,我们将无法再调用kern.proc,查看来自任何其他进程的数据kern.procargs,kern.procargs2而不是自己的数据.这是一个非常合法的隐私硬化Apple.

任何人都可以证实,调用sysctlbyname(...)hw.machine获取确切的设备名称是允许在iOS9且不受上述限制?

tou*_*bun 3

是的,我已经在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;
}
Run Code Online (Sandbox Code Playgroud)

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