在iOS9中使用“hw.machine”标志调用“sysctlbyname(…)”
在WWDC 2015会话“703 Privacy and Your App”之后,使用sysctl
更改。 现在我们将无法再调用kern.proc
, kern.procargs
, kern.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”function限制的影响。