如何在功能中排除iPad 2和iPod Touch第五代?

时间:2012-01-05 20:56:58

标签: objective-c ios xcode cocoa-touch ios5

我正在尝试创建一个适用于除iPad 2和iPod Touch第五代以外的所有iOS设备的功能。

- (void)doSomething {

// if iPad 2 or iPod 5th Gen
if ()
{
    NSLog(@"You're using an iPad 2 or iPod 5th Gen. Sorry!");
}
else
{
    NSLog(@"Any other iOS device. Congrats!");
} }

有人可以发布一个快速示例片段,说明我将如何实现这一目标吗?

2 个答案:

答案 0 :(得分:4)

如果您的应用具有主要硬件要求(即,如果设备上没有硬件,它无法真正起作用/做任何有用的事情),您应该在UIRequiredDeviceCapabilities条目中添加一个条目您的应用的Info.plist。这将使没有必要硬件的人无法使用您的应用程序购买/意外下载。它还将使App Store显示支持您的软件的所有模型的列表,以便人们可以看到他们需要什么才能使用它。

如果您的应用程序具有需要特定功能的功能,则通常可以使用框架内测试来查看设备是否具有所需的功能/硬件。如果这不是您应用的核心目的,则可以根据设备的功能启用/禁用应用的此功能。您不希望尝试查询用户正在运行的设备(可能非常有限的情况除外),但更愿意查询设备是否能够执行您想要的操作。

由于您提到了自动对焦相机,我们将以此为例。如果您的应用要求执行任何有用的操作,则应将UIRequiredDeviceCapabilities键添加到Info.plist文件中,并将条目auto-focus-camera添加到数组中。这将确保只有拥有带自动对焦相机的设备的用户才能购买并安装您的应用。有关Info.plist的UIKit密钥的详细信息,请参阅此Information Property List Key Reference

另一方面,如果您的应用程序可供任何设备使用但具有需要自动对焦相机的功能,则可以使用AVFoundation框架测试其存在。您可以从AVCaptureDevice课程获得所需内容。例如,要检查您是否可以访问用于视频/静止图像的自动对焦相机:

// Check for the default camera
AVCaptureDevice* camera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if( camera && [camera isFocusModeSupported:AVCaptureFocusModeAutoFocus] ) {
  // this device has a default video source capable of autofocus, so enable the feature
} else {
  // this device does not have the required hardware, so disable the feature
}

答案 1 :(得分:0)

检查一下:

if ([[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] isFocusModeSupported:AVCaptureFocusModeAutoFocus]) {
   //device with autofocus
}
else {
       //device without autofocus
}