У меня есть приложение, которое использует комбинацию startMonitoringForRegion:
и startMonitoringSignificantLocationChanges
, чтобы знать, где находится пользователь, когда приложение находится в фоновом режиме. Означает ли это, что мне нужно включить значение location
для клавиши UIBackgroundModes
в Info.plist
?
Это цитата из документов:
Служба значительных изменений местоположения настоятельно рекомендуется для приложений, которым не нужны высокоточные данные о местоположении. С помощью этой службы обновления местоположения генерируются только при значительном изменении местоположения пользователей; таким образом, он идеально подходит для социальных приложений или приложений, которые предоставляют пользователю некритичную информацию о местоположении. Если приложение приостанавливается при возникновении обновления, система обрабатывает его в фоновом режиме для обработки обновления. Если приложение запускает эту службу и затем завершается, система автоматически запускает приложение, когда новое место становится доступным. Эта услуга доступна в iOS 4 и более поздних версиях, и она доступна только на устройствах, которые содержат сотовую радиостанцию.
...
Приложение, которое обеспечивает постоянное обновление местоположения для пользователя (даже в фоновом режиме), может включать службы определения местоположения, включая ключ UIBackgroundModes (со значением местоположения) в файле Info.plist. Включение этого значения в ключ UIBackgroundModes не мешает системе приостанавливать приложение, но оно сообщает системе, что оно должно пробуждать приложение, когда есть новые данные о местоположении для доставки. Таким образом, этот ключ эффективно позволяет приложению запускаться в фоновом режиме для обработки обновлений местоположения всякий раз, когда они происходят.
Моя интерпретация этого заключается в том, что значение location
для ключа UIBackgroundModes
требуется только в том случае, если приложение нуждается в постоянном обновлении местоположения, например, в спутниковом приложении.
Я также попробовал запустить приложение на устройстве без значения location
для ключа UIBackgroundModes
, и он продолжает сообщать о значительных изменениях местоположения и когда введена область из выхода.
Кроме того, единственное место, которое UIBackgroundModes
упоминается в Справочник класса CLLocationManager, находится в обсуждении startUpdatingLocation
, которое я не используя.