如何在iOS崩溃报告中找到苹果团队测试过的硬件型号

Mah*_*ana 5 xcode crash-reports ios

我最近有一个应用程序由于 被 Apple 拒绝crash,但我无法从我们的最终重现崩溃。我已经检查了所有兼容的设备:iPhoneiPadiPod。但是,我仍然无法重现崩溃。

我的问题是:我如何了解 Apple 团队使用哪种设备来测试应用程序。在崩溃报告中,他们提到了Hardware Model: xxx. 请问,有谁知道如何找到Hardware ModelApple团队使用的?

事件标识符:71C3E97D-4DF2-A84F-5EB28058AA11 CrashReporter 密钥:025fa689e0eb7fe33eaf5858d306609d6fb 硬件型号:xxx 进程:-------[225] 路径:
/private/FAC/B900/04B02Emobile/FAB/9B/var/1B -92ACE9AD72C5/------.app/------ 标识符:------------ 版本:1.0 (1.0) 代码类型:ARM-64(本机)父进程:启动 [1]

日期/时间:2014-12-02 10:32:31.758 -0800 发布时间:
2014-12-02 10:18:02.789 -0800 操作系统版本:iOS 8.1.1 (12B435) 报告版本:105

异常类型:EXC_CRASH (SIGABRT) 异常代码:0x0000000000000000, 0x0000000000000000 由线程触发:0

上次异常回溯:(0x18510e59c 0x195c840e4 0x184ff91f8 0x100086e1c 0x1000ddca0 0x1898c0aa0 0x1898c07b0 0x18993d060 0x18993cf74 0x1899afa48 0x189bd7f18 0x189bd86c0 0x1899adcf0 0x1899e3058 0x1899e2024 0x1899b3e90 0x1899b27cc 0x1899b051c 0x189bda218 0x1899e78c4 0x18998fec4 0x18998fec4 0x18998fc60 0x1000a48c0 0x18fc4a148 0x18b4e4438 0x18b540c1c 0x18b536acc 0x18b54053c 0x183992bc0 0x1839c6660 0x1839c66b8 0x1962c93ac 0x1962c936c 0x1962cd980 0x1850c5fa4 0x1850c404c 0x184ff10a4 0x18e1675a4 0x1899263c0 0x1001337e0 0x1962f2a08)

Bru*_*eri 0

有点晚了,但可能对其他人有用。到目前为止,我发现获取iOS 设备的硬件型号标识符的唯一方法是采用此类中的方法。如果还有其他方法请评论。

为了避免此链接可能丢失,这里总结了如何进行较小的更改(目标 C):

#include <sys/sysctl.h>

...

- (NSString*)hardwareModelIdentifier
{
  char* typeSpecifier = "hw.model";
  size_t size;
  sysctlbyname(typeSpecifier, NULL, &size, NULL, 0);

  char* answer = malloc(size);
  sysctlbyname(typeSpecifier, answer, &size, NULL, 0);
  
  NSString* modelIdentifier = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding];

  free(answer);
  return modelIdentifier;
}
Run Code Online (Sandbox Code Playgroud)

结果应与此列表中的“内部名称”列相匹配。例如,对于 iPhone 12,您应该获得 D53gAP。

请注意,这尚未经过App Store 验证。如果您使用此方法成功提交了应用程序,请告诉我。

sysctl.h进一步注意,在它旁边的标题中model显示/* Deprecated: use hw.target */.

我对 Xcode 12.0.1 和 iOS 13.7 的测试确实表明,在撰写本文时,仅使用 charshw.model提供了结果,而 ashw.target没有提供任何结果(在模拟器和设备上测试)。