是否可以在运行时检测到您的 iOS 应用程序正在 iPad mini 上运行?

2023-12-27

在运行时检测不同的硬件对于分析很有用(以及其他更值得怀疑的目的)。

许多 iOS 应用程序创建者可能有兴趣了解有多少用户在 iPad mini 上体验他们的应用程序(而不仅仅是知道有多少用户在屏幕分辨率为 1024x768 的 iPad 上体验他们的应用程序 - 这也很有趣)。

有没有公​​共APICocoa touch/UIKit/ObjC/C它可以用来检测您的 iOS 应用程序是否在运行时在 iPad mini 上运行?理想情况下,此方法应区分 iPad 2 和 iPad mini(它们具有相同的像素数,但像素密度不同)。


后记:我意识到很多人会认为在运行时检测 iPad mini 是一个坏主意。然而,我认为这是一个有效的问题,有明确的“是”或“否”答案。我认为这个答案对于社区来说是有用的。


如果 Boxel 的答案不调用未定义的行为并且没有多余的部分,那么它会很好。一,+ [NSString stringWithCString:encoding:]需要一个 C 字符串 - 即一个以 NUL 结尾的字符指针(否则它很可能会转储核心)。另外,您不需要转换为NSString- 自从sysctlbyname()为您提供了一个普通的旧C字符串(当然没有NUL终止符),您可以直接使用strcmp()节省几十个 CPU 周期:

#include <sys/sysctl.h>

size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size + 1);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
machine[size] = 0;

if (strcmp(machine, "iPad2,5") == 0) {
    /* iPad mini */
}

free(machine);

编辑:现在答案也已修复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在运行时检测到您的 iOS 应用程序正在 iPad mini 上运行? 的相关文章

随机推荐