如何检测用户使用的iOS设备?

Mur*_*gat 7 iphone objective-c device uidevice ipad

我正在寻找一种方法来检测我的应用程序正在运行的设备.我对软件版本不感兴趣.我搜索了很多问题但是没有一个(令人惊讶地)满足了我的需求,原因如下:

解决方案1:

NSString *deviceType = [UIDevice currentDevice].model;
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它只给我"iPad".我想知道它是iPad,iPad 2,新iPad,iPhone 3GS,iPhone4等.

解决方案2:不测试设备类型,检查各个功能

这不适用,因为我希望此数据收集用户统计信息,而不是执行任何特定于设备的操作.

解决方案3:使用此处的 UIDeviceHardware

此代码看起来很过时,似乎访问设备上的私有数据.甚至有人争论使用此应用的应用是否会获得批准.更重要的是,我不知道它是如何工作的:) 这里也有另一种选择

我提到的最后两个中的任何一个都可以安全使用吗?他们未来是否合规?他们是否遵守Apple批准规则?

或者还有其他方法来解决这个问题吗?

提前致谢.

NJo*_*nes 6

Apple在其示例代码中使用了这样的API.要引用LargeImageDownsizing示例项目,请在LargeImageDownsizingViewController.m以第83行开头的文件中:

可以选择合适的结果图像大小和图块大小,但留给开发人员作为练习.请注意,设备类型/版本字符串(例如"iPhone2,1"可以在运行时通过使用sysctlbyname函数确定:

size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString* _platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
free(machine);
Run Code Online (Sandbox Code Playgroud)

在我的情况下,_platform将iPod4,1用于iPod touch第4代.

这段代码是你发布的两个Github示例的根源.