呼唤;sysctlbyname(…)”;加上;“hw.机器”;iOS9中的标志

呼唤;sysctlbyname(…)”;加上;“hw.机器”;iOS9中的标志,ios,sysctl,ios-9-beta3,Ios,Sysctl,Ios 9 Beta3,在WWDC 2015会议“703隐私和你的应用”之后,使用sysctl进行了更改。现在,我们将不再能够调用kern.proc,kern.procargs,kern.procargs2,并从任何其他进程中查看数据,而不是自己。这是苹果公司非常合法的隐私保护措施 有人能确认在iOS9中允许使用hw.machine调用sysctlbyname(…)来获取准确的设备名,并且不受上述限制的影响吗?是的,我已经在iPhone5中使用Xcode7 beta5对其进行了测试(安装了iOS9 beta5,而不是模

在WWDC 2015会议“703隐私和你的应用”之后,使用
sysctl
进行了更改。现在,我们将不再能够调用
kern.proc
kern.procargs
kern.procargs2
,并从任何其他进程中查看数据,而不是自己。这是苹果公司非常合法的隐私保护措施


有人能确认在iOS9中允许使用
hw.machine
调用
sysctlbyname(…)
来获取准确的设备名,并且不受上述限制的影响吗?

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


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

您好,谢谢您的回答。但我的问题实际上是,苹果是否可以拒绝使用带有“hw.machine”标志的“sysctlbyname”应用程序,还是只拒绝使用“kern.proc”标志的应用程序?顺便说一下,这与我们现在无法获得正在运行的应用程序列表的原因相同(((我相信这是在Cordova的CDVDevice.m中使用的。因此,如果不允许,Cordova就不会使用它。我真正的问题是……我们如何验证这个字符串来自真实的设备?我需要它来防止人们在我的社交网络上创建无限制的帐户。如果你需要像“iPhone1,1”这样的字符串,然后也请参见。它看起来比
sysctlbyname
更容易用于模型字符串。
+(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;
}