Если к вашему приложению предъявляются основные требования к оборудованию (т. Е. Оно не может реально функционировать / делать что-либо полезное, если на устройстве отсутствует оборудование), вам следует добавить запись к записи UIRequiredDeviceCapabilities
в вашем Info.plist
для вашего приложения.Это не позволит людям, у которых нет необходимого оборудования для использования вашего приложения, покупать его / загружать его случайно.Это также приведет к тому, что в магазине приложений отобразится список всех моделей, которые поддерживают ваше программное обеспечение, чтобы люди могли видеть, что им нужно для его использования.
Если в вашем приложении есть функция, требующая чего-то определенного,как правило, есть встроенные тесты, которые вы можете проверить, чтобы убедиться, что устройство обладает необходимыми функциями / оборудованием.Если это не является основной целью вашего приложения, вы можете включить / отключить эту функцию своего приложения в зависимости от возможностей устройства.Вы не захотите пытаться запросить, какое устройство работает у пользователя (за исключением, может быть, в очень ограниченных обстоятельствах), но скорее спросите, способно ли устройство делать то, что вы хотите.
Поскольку вы упомянули об авто-фокусируя камеру, мы будем использовать это в качестве примера.Если ваше приложение требует, чтобы это делало что-то полезное, вы должны добавить ключ UIRequiredDeviceCapabilities
в файл Info.plist
и добавить запись auto-focus-camera
в массив.Это гарантирует, что только пользователи, у которых есть устройство с автофокусировкой, смогут приобрести и установить ваше приложение.Дополнительные сведения о ключах UIKit для Info.plist
, включая этот, см. В справочнике по ключам списка свойств информации .
Если, с другой стороны, ваше приложение может использоваться любым устройством, ноимеет функцию, которая требует автофокусировки камеры, вы можете проверить ее наличие, используя AVFoundation
framework.Здесь вы можете получить то, что вам нужно, из класса 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
}