我正在开发一个通用应用程序,该应用程序仅用于 Retina 显示屏 iPhone/IPod 触摸设备 + IPad。如何在 plist 或我的应用程序/二进制文件中的其他任何地方指定它?
UIRequiredDeviceCapabilities
对这两种设备都不起作用,因为我可以指定我需要front-facing-camera
iPhone/IPod 但这会排除 iPad 1。
我正在开发一个通用应用程序,该应用程序仅用于 Retina 显示屏 iPhone/IPod 触摸设备 + IPad。如何在 plist 或我的应用程序/二进制文件中的其他任何地方指定它?
UIRequiredDeviceCapabilities
对这两种设备都不起作用,因为我可以指定我需要front-facing-camera
iPhone/IPod 但这会排除 iPad 1。
这是做不到的。UIRequiredDeviceCapabilities 应该用于限制您的应用/游戏真正需要或排除的功能,它并不意味着仅仅因为开发人员不想支持它们而限制特定的设备集。因此,基本上,您在设计时应始终牢记当前正在更新到上一个操作系统的所有设备。
我真的不建议这样做,但你可以找出它是什么设备,然后在方法isCorrectDevice
返回 true 时基于加载你的应用程序:
- (BOOL) isCorrectDevice
{
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];
free(machine);
if ([platform isEqualToString:@"iPhone3,1"] ||
[platform isEqualToString:@"iPhone3,2"] ||
[platform isEqualToString:@"iPod4,1"] ||
[platform isEqualToString:@"iPad1,1"] ||
[platform isEqualToString:@"iPad2,1"] ||
[platform isEqualToString:@"iPad2,2"] ||
[platform isEqualToString:@"iPad2,3"])
return true;
else
return false;
}
这样做有一些问题。一个是,一旦 Apple 发布了新设备,这将是过时的,并且不会包含较新的设备;而且,这不会阻止其他设备的用户下载它。我想您可以加载一个显示“仅在...上可用”的屏幕?只是一个想法。