如果您的應用程序有一個主要的硬件要求(即,它不能真正功能/做任何有用的,如果硬件是不存在的設備上),你應該添加UIRequiredDeviceCapabilities
條目在您的應用的Info.plist
中。這將使那些沒有必要硬件的人無法使用你的應用程序購買/下載它。它還會使應用商店顯示支持您軟件的所有模型的列表,以便人們可以看到他們需要什麼來使用它。
如果您的應用程序具有需要某些特定功能的功能,則通常可以進行框架內測試以查看設備是否具有所需的功能/硬件。如果這不是您應用程序的主要目的,則可以根據設備的功能啓用/禁用應用程序的此功能。您不希望嘗試查詢用戶正在運行的設備(除非可能情況非常有限),而是詢問設備是否有能力按照您的要求進行操作。
既然您提到了自動對焦相機,我們將以此爲例。如果您的應用程序需要此操作來執行任何操作,則應將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
}
蘋果可能會拒絕你做這件事的應用程序(推薦方法是排除/包括基於可用的硬件功能),但您可以從sysctl(3)調用中獲取硬件型號。由於沒有iPod Touch 5G,你必須得到它的型號字符串,你或者只能包含當前已知的硬件模型(和猜測)或排除特定的已知硬件模型(例如,iPad 2是iPad2,1 iPad2 ,2個iPad2,3分別用於WiFi,3G和CDMA型號)。 – 2012-01-05 21:13:32
好的,有沒有辦法確定相機是否具有自動對焦功能? – 2012-01-05 21:14:23
是的,對於UIRequiredDeviceCapabilities Info.plist鍵,添加自動對焦相機條目。有關UIKit鍵及其定義的完整列表,請參閱http://developer.apple.com/library/prerelease/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW1 – 2012-01-05 21:17:21