CLLocationManager
Оператор импорта
Swift
import CoreLocation
Objective C
@import CoreLocation;
Доступность
Доступный в iOS 2.0 и позже.
CLLocationManager
класс является центральной точкой для конфигурирования поставки расположения - и связанные с заголовком события к Вашему приложению. Вы используете экземпляр этого класса для установления параметров, определяющих, когда расположение и возглавляющие события должны быть поставлены и запустить и остановить фактическую поставку тех событий. Можно также использовать менеджера расположения объект получить новое расположение и возглавляющие данные.
Менеджер расположения объект предоставляет поддержку для следующих связанных с расположением действий:
Отслеживание больших или маленьких изменений в текущем расположении пользователя с конфигурируемой степенью точности.
Создание отчетов о возглавляющих изменениях от встроенного компаса. (только iOS)
Контроль отличных областей интереса и генерация событий расположения, когда пользователь вводит или оставляет те области.
Задержка поставки обновлений информации о местоположении, в то время как приложение в фоновом режиме. (iOS 6 и позже только)
Создание отчетов о диапазоне к соседним маркерам.
Сконфигурировать и использовать a CLLocationManager
объект поставить события:
Всегда запрашивайте авторизацию использовать службы определения местоположения и проверку, чтобы видеть, доступны ли желаемые службы, как описано в Выяснении у Разрешения Использовать Службы определения местоположения.
Создайте экземпляр
CLLocationManager
класс и хранилище сильная ссылка к нему где-нибудь в Вашем приложении.При хранении сильной ссылки менеджеру расположения, объект требуется, пока все задачи, включающие тот объект, не завершены. Поскольку большая часть менеджера расположения, которого задачи выполняют асинхронно, храня Вашего менеджера расположения в локальной переменной, недостаточна.
Присвойте пользовательский объект
delegate
свойство. Этот объект должен соответствоватьCLLocationManagerDelegate
протокол.Сконфигурируйте любые дополнительные свойства, относящиеся к желаемой службе.
Вызовите надлежащий метод запуска для начала поставки событий.
Все расположение - и связанные с заголовком обновления поставлено связанному объекту делегата, который является пользовательским объектом, который Вы обеспечиваете. Для получения информации о методах делегата Вы используете, чтобы получить события, видеть Ссылку на протокол CLLocationManagerDelegate.
Запрос разрешения использовать службы определения местоположения
Использование служб определения местоположения требует авторизации пользователя. Кроме того, некоторые службы определения местоположения требуют присутствия определенных аппаратных средств на данном устройстве. Например, заголовок информации доступен только на устройствах, содержащих аппаратный компас. До использования служб определения местоположения Ваше приложение должно запросить авторизацию от пользователя использовать те службы, и это должно проверить наличие целевых служб. Типичная последовательность для использования служб определения местоположения следующие:
Вызовите
authorizationStatus
метод класса получить текущее состояние авторизации для Вашего приложения.Если состояние авторизации
kCLAuthorizationStatusRestricted
илиkCLAuthorizationStatusDenied
, Вашему приложению не разрешают использовать службы определения местоположения, и необходимо прервать попытку использовать их.Создайте Ваш
CLLocationManager
возразите и присвойте делегата в нем.Сохраните сильную ссылку своему менеджеру расположения где-нибудь в Вашем приложении.
В iOS, если состояние авторизации было
kCLAuthorizationStatusNotDetermined
, вызовитеrequestWhenInUseAuthorization
илиrequestAlwaysAuthorization
метод для запроса надлежащего типа авторизации от пользователя.В зависимости от служб Вы нуждаетесь, вызываете один или больше следующих методов:
При использовании стандартной службы определения местоположения вызовите
locationServicesEnabled
метод.При использовании значительной службы изменения расположения вызовите
significantLocationChangeMonitoringAvailable
метод.При использовании возглавляющей информации вызовите
headingAvailable
метод.Если Вы контролируете географический или области маркера, вызовите
isMonitoringAvailableForClass:
метод.При выполнении расположения на маркерах Bluetooth вызовите
isRangingAvailable
Безопасно запустить службы определения местоположения, прежде чем будет определено состояние авторизации Вашего приложения. Несмотря на то, что можно запустить службы определения местоположения, те службы не поставляют данных до изменений состояния авторизации в kCLAuthorizationStatusAuthorizedAlways
или kCLAuthorizationStatusAuthorizedWhenInUse
. Быть уведомленным, когда состояние авторизации изменяется, реализация locationManager:didChangeAuthorizationStatus:
метод в Вашем менеджере расположения делегат.
Для служб Вы используете, конфигурируете любые свойства, связанные с той службой точно. Базовое Расположение управляет питанием настойчиво путем выключения аппаратных средств, когда это не необходимо. Например, установка желаемой точности для событий расположения к одному километру дает менеджеру расположения гибкость, чтобы выключить аппаратные средства GPS и положиться исключительно на WiFi или радио ячейки, которые могут привести к значительной экономии электроэнергии.
Получение текущего расположения пользователя
Существует две опции для конфигурирования связанных с расположением служб:
Используйте стандартную службу определения местоположения, позволяющую Вам указывать желаемую точность данных расположения и получать обновления, когда изменяется расположение.
Используйте значительную службу изменения расположения, обеспечивающую более ограниченный набор отслеживания опций, но предлагающую значительную экономию электроэнергии по стандартным службам определения местоположения. В iOS эта служба может также запустить Ваше приложение по мере необходимости для поставки обновлений информации о местоположении.
Стандартная служба определения местоположения является самой подходящей для приложений, поставляющих связанную с расположением информацию непосредственно пользователю, но это может использоваться другими типами приложений также. Для запуска службы сконфигурируйте desiredAccuracy
и distanceFilter
свойства менеджера расположения и затем вызывают startUpdatingLocation
метод. Вы никогда не должны указывать значение точности, больше, чем, в чем Вы нуждаетесь. Базовое Расположение использует значение точности, которое Вы указываете для управления питанием лучше. Более высокая степень точности требует более точных аппаратных средств как GPS, использующий больше питания.
Значительная служба изменения расположения лучше подходит для приложений, хотящих получить начальное расположение пользователя и затем только, чтобы хотеть знать, когда изменяется то расположение. Эта служба требует присутствия сотовых аппаратных средств и поставляет события менее часто, чем стандартные службы определения местоположения. Для запуска значительной службы изменения расположения вызовите startMonitoringSignificantLocationChanges
метод.
Независимо от которой службы определения местоположения Вы используете, о данных расположения сообщают Вашему приложению через менеджера расположения, связал объект делегата. Поскольку может потребоваться несколько секунд для возврата начального расположения, менеджер расположения обычно поставляет ранее кэшируемые данные расположения сразу и затем поставляет более актуальные данные расположения, поскольку это становится доступным. Поэтому это всегда - хорошая идея проверить метку времени любого объекта расположения прежде, чем принять любые меры. Если обе службы определения местоположения включены одновременно, они поставляют события с помощью того же набора методов делегата.
Когда приложение в фоновом режиме, в iOS 6 и позже, можно задержать поставку данных расположения. Рекомендуется использовать эту функцию в ситуациях, где приложение могло обработать данные позже без любых проблем. Например, приложение, отслеживающее расположение пользователя на походном маршруте, могло задержать обновления, пока пользователь не увеличивает определенное расстояние, и затем обработайте точки одновременно. Задержка обновлений помогает сэкономить электроэнергию, позволяя Вашему приложению остаться спящей в течение более длительных промежутков времени.
Используя области для контроля граничных пересечений
Можно использовать контролирующую область службу, которая будет уведомлена, когда пользователь пересекает основанную на области границу. Контроль области применяет обоих к географическим областям (представленный CLCircularRegion
класс) и указывать областям путь (представленный CLBeaconRegion
класс). Вы область, контролирующая для обнаружения граничные пересечения указанной области и Вы используете те граничные пересечения для выполнения связанных задач. Например, после приближения работники химчистки, приложение могло уведомить пользователя для взятия любой одежды, которая была понижена и теперь готова.
Для запуска контроля области сконфигурируйте надлежащий объект области и передайте его startMonitoringForRegion:
метод Вашего менеджера расположения. В iOS зарегистрированные области сохраняются между запусками Вашего приложения. Если граничное пересечение области происходит, в то время как Ваше приложение для iOS не работает, система автоматически будит его (или повторно запускает его), в фоновом режиме так, чтобы это могло обработать событие. В этом случае словарь опций передал application:didFinishLaunchingWithOptions:
метод Вашего делегата приложения содержит ключ UIApplicationLaunchOptionsLocationKey
указать, что Ваше приложение было запущено из-за связанного с расположением события. Во время процесса перезапуска необходимо воссоздать менеджера расположения объект и присвоить делегата, способного к обработке связанных с областью событий. После того, как Вы делаете это, система поставляет уведомление области, для которого было запущено Ваше приложение. Все области, которые Вы сконфигурировали ранее, сделаны доступными в monitoredRegions
свойство любого менеджера расположения возражает, что Вы создаете.
В OS X контроль области работает только, в то время как приложение работает (или на переднем плане или на фоне), и система пользователя бодрствует. Система не запускает приложения для поставки связанных с областью уведомлений. Точно так же, если пользователь помещает компьютер для сна, система не поставляет контрольные уведомления области приложению. Если пользователь будит компьютер в контролируемой области, система действительно поставляет уведомления области Вашему приложению, если это работает. Однако, если компьютер вводит и выходит из области прежде чем быть разбуженным, никакое уведомление не поставлено.
Контрольная служба области работает независимо от любых служб определения местоположения в использовании Вашим приложением, и можно использовать его в сочетании с любой из других служб. Контроль области не поддерживается на всех устройствах. Используйте regionMonitoringAvailable
метод класса определить, может ли использоваться контроль области.
Определение близости к маркерам
Можно использовать службу расположения маркера для определения приблизительного расстояния до устройств та поддержка iBeacon технология. Расположение маркера включает прислушивание к устройствам, широковещательно передающим их присутствие по Bluetooth LE. Когда Вы начинаете располагаться, Вы получаете информацию об идентифицировании каждого маркера, который находится в диапазоне, включая информацию о том, является ли тот маркер соседним или более далеким. Обновления тогда поставлены каждый раз, когда изменяется состояние маркера.
Для запуска расположения маркера создайте a CLBeaconRegion
объект, идентифицирующий маркеры, Вы хотите и передаете тот объект startRangingBeaconsInRegion:
метод. Поскольку менеджер расположения обнаруживает маркеры, это поставляет ту информацию своему делегату locationManager:didRangeBeacons:inRegion:
метод. В области, где много маркеров активны и перемещается пользователь, обновления могут часто поставляться. Для сохранения времени работы от батареи не располагайтесь для маркеров все время. Рекомендуемая практика должна использовать контрольную службу области, чтобы обнаружить присутствие маркеров сначала и начать располагаться только после обнаружения одного или более маркеров. И, конечно, необходимо прекратить располагаться, как только у Вас есть информация, Вам нужно или когда Вы перемещаетесь из диапазона Ваших маркеров.
Configuring Heading-Related Services
В iOS можно использовать службу заголовка для получения связанной с компасом информации об устройствах с надлежащими аппаратными средствами. Приложения, реализующие опции навигации или ориентации в пространстве, могут использовать информацию о компасе для определения, к какому пути пользователь обращенным. Служба заголовка не поддерживается в OS X.
Для начала поставки связанных с заголовком событий присвойтесь, делегат в менеджере расположения возражают и вызывают startUpdatingHeading
метод. Если обновления информации о местоположении также включены, менеджер расположения возвращает и заголовок истины и магнитные значения заголовка. Если обновления информации о местоположении не включены, менеджер расположения возвращает только магнитное значение заголовка.
Базовое Расположение поставляет возглавляющие данные Вашему приложению, в то время как это находится на переднем плане. Когда Ваше приложение перемещается в фон, остановки поставки события, если Вашему приложению не включили фоновый режим обновлений информации о местоположении, и стандартная служба определения местоположения работает. Вы можете включить фоновые режимы из вкладки Capabilities Вашего проекта XCode, но должны сделать так, только если можно использовать возглавляющие данные практически в то время как в фоновом режиме.
Получение посещаемых расположений
В iOS служба посещений обеспечивает альтернативу значительной службе изменения расположения для приложений, для которых нужна информация о расположении об интересных местах, которые посетил пользователь. Например, если пользователь находится в одном расположении в течение длительного периода времени, служба могла бы генерировать событие, когда пользователь достигает того расположения и другого, когда пользователь покидает то расположение. Служба предназначается для приложений, которые могли бы уже использовать значительную службу изменения расположения и хотеть еще более низкое питание способ сделать так. Вы не использовали бы эту службу для создания приложений навигации или приложений, полагающихся на регулярные обновления информации о местоположении.
Для начала поставки связанных с посещением событий присвойтесь, делегат в менеджере расположения возражают и вызывают startMonitoringVisits
метод. Поскольку менеджер расположения генерирует события посещения, это поставляет ту информацию своему делегату locationManager:didVisit:
метод. Данные о событии, поставленные Вашему делегату, включают только информацию, произошедшую после запуска поставки событий. Другими словами, если Вы запустите поставку событий после того, как пользователь достиг интересного расположения, событие, поставленное системой, когда пользователь отбыл, то то расположение не отразит время фактического поступления. Если система завершает Ваше приложение, эта служба повторно запускает его, когда новые события посещения готовы быть поставленными.
Используя службы определения местоположения в фоновом режиме
Большинство служб определения местоположения предназначается, чтобы использоваться, в то время как Ваше приложение находится на переднем плане, но некоторые могут также работать в фоновом режиме. В некоторых случаях события расположения могут даже заставить Ваше приложение быть повторно запущенным для обработки события. Для выполнения большинства служб определения местоположения в фоновом режиме необходимо включить фоновый режим обновлений информации о местоположении на вкладке Capabilities проекта XCode. Для служб, запускающих Ваше приложение, необходимо запросить (и предоставлены), «Всегда» авторизация от пользователя.
В то время как приложение работает на переднем плане, стандартная служба определения местоположения обычно поставляет события. Когда Ваше приложение в фоновом режиме, эта служба поставляет события только, когда фоновый режим обновлений информации о местоположении включен для приложения. Эта служба не повторно запускает завершенные приложения для iOS.
В то время как приложение работает на переднем плане или фоне, значительная служба изменения расположения обычно поставляет события. Для завершенного приложения для iOS эта служба повторно запускает приложение для поставки событий. Использование этой службы «всегда» требует авторизации от пользователя.
В то время как приложение работает на переднем плане или фоне, контрольная служба области обычно поставляет события. (Можно использовать эту службу и для географических областей и для областей маркера.) Для завершенного приложения для iOS эта служба повторно запускает приложение для поставки событий. Использование этой службы «всегда» требует авторизации от пользователя.
В то время как приложение работает на переднем плане, расположение маркера обычно поставляет события. Когда Ваше приложение в фоновом режиме, эта служба поставляет события только, когда фоновый режим обновлений информации о местоположении включен для приложения, и стандартная служба определения местоположения работает. (Если область маркера
notifyEntryStateOnDisplay
свойствоYES
true
, пробуждение устройства заставляет приложение располагаться для маркеров в течение нескольких секунд в фоновом режиме.) Эта служба не повторно запускает завершенные приложения для iOS; однако, Вы можете быть повторно запущены путем контроля областей маркера с помощью контрольной службы области.В то время как приложение для iOS работает на переднем плане, служба заголовка обычно поставляет события. Когда Ваше приложение в фоновом режиме, эта служба поставляет события только, когда фоновый режим обновлений информации о местоположении включен для приложения, и стандартная служба определения местоположения работает. Эта служба не повторно запускает завершенные приложения для iOS.
В то время как приложение для iOS работает на переднем плане, служба посещения обычно поставляет события. Когда Ваше приложение в фоновом режиме, эта служба поставляет события только, когда фоновый режим обновлений информации о местоположении включен для приложения, и стандартная служба определения местоположения работает. Для завершенного приложения для iOS эта служба повторно запускает приложение для поставки событий. Использование этой службы «всегда» требует авторизации от пользователя.
Включение фонового режима обновлений информации о местоположении гарантирует, что приложение продолжает получать события расположения в то время как в фоновом режиме. Когда приложение перемещается в фон, система добавляет индикатор служб определения местоположения к строке состояния, чтобы позволить пользователю знать, что приложение использует службы определения местоположения. Система может все еще завершить приложение в любое время для предъявления претензий в отношении его памяти или других ресурсов.
Для служб, повторно запускающих приложение, система добавляет UIApplicationLaunchOptionsLocationKey
ключ к словарю опций передал делегату приложения во время запуска. Когда этот ключ присутствует, необходимо перезапустить службы определения местоположения приложения сразу же. Словарь опций не включает информацию о самом событии расположения. Необходимо сконфигурировать нового менеджера расположения объект и делегировать и запустить службы определения местоположения снова для получения любых незаконченных событий. В iOS 7.1 и позже, службы, заставляющие приложение быть повторно запущенным, делают так даже после пользовательских выходов силы приложение. В предыдущих версиях iOS выход силы приложение препятствовало тому, чтобы было повторно запущено приложение.
Если Ваше приложение ничего не должно делать с событиями расположения сразу же, рассмотрите обновления информации о местоположении задержки с помощью allowDeferredLocationUpdatesUntilTraveled:timeout:
метод. Все еще поставляя событиям расположения для Вашего приложения нужно, задержка поставки обновлений информации о местоположении упрощает для Базового Расположения сохранять время работы от батареи.
-
Разрешение запросов использовать службы определения местоположения, в то время как приложение находится на переднем плане.
Объявление
Swift
func requestWhenInUseAuthorization()
Objective C
- (void)requestWhenInUseAuthorization
Обсуждение
Когда текущее состояние авторизации
kCLAuthorizationStatusNotDetermined
, этот метод работает асинхронно и предлагает пользователю давать разрешение к приложению использовать службы определения местоположения. Пользовательская подсказка содержит текст отNSLocationWhenInUseUsageDescription
введите свое приложениеInfo.plist
файл и присутствие того ключа требуются при вызове этого метода. После того, как состояние определяется, менеджер расположения поставляет результаты делегатуlocationManager:didChangeAuthorizationStatus:
метод. Если текущее состояние авторизации - что-нибудь кромеkCLAuthorizationStatusNotDetermined
, этот метод ничего не делает и не вызываетlocationManager:didChangeAuthorizationStatus:
метод.Необходимо вызвать этот метод или
requestAlwaysAuthorization
метод до использования служб определения местоположения. Если пользователь предоставляет, «когда в использовании» авторизация к Вашему приложению, Ваше приложение может запустить большинство (но не все) службы определения местоположения, в то время как это находится на переднем плане. (Приложения не могут использовать службы, автоматически повторно запускающие приложение, такое как контроль области или значительная служба изменения расположения.), Когда запущено на переднем плане, службы продолжают работать в фоновом режиме, если Ваше приложение включило фоновые обновления информации о местоположении на вкладке Capabilities Вашего проекта XCode. Попытки запустить службы определения местоположения, в то время как Ваше приложение работает в фоновом режиме, перестанут работать. Когда Ваше приложение перемещается в фон с активными службами определения местоположения, система выводит на экран индикатор служб определения местоположения в строке состояния.Для получения дополнительной информации о
NSLocationWhenInUseUsageDescription
ключ, посмотрите информационную Ключевую Ссылку Списка свойств.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 8.0 и позже.
-
Разрешение запросов использовать службы определения местоположения каждый раз, когда работает приложение.
Объявление
Swift
func requestAlwaysAuthorization()
Objective C
- (void)requestAlwaysAuthorization
Обсуждение
Когда текущее состояние авторизации
kCLAuthorizationStatusNotDetermined
, этот метод работает асинхронно и предлагает пользователю давать разрешение к приложению использовать службы определения местоположения. Пользовательская подсказка содержит текст отNSLocationAlwaysUsageDescription
введите свое приложениеInfo.plist
файл и присутствие того ключа требуются при вызове этого метода. После того, как состояние определяется, менеджер расположения поставляет результаты делегатуlocationManager:didChangeAuthorizationStatus:
метод. Если текущее состояние авторизации - что-нибудь кромеkCLAuthorizationStatusNotDetermined
, этот метод ничего не делает и не вызываетlocationManager:didChangeAuthorizationStatus:
метод.Необходимо вызвать этот метод или
requestWhenInUseAuthorization
метод до использования служб определения местоположения. Когда пользователь «всегда» предоставляет авторизацию Вашему приложению, Ваше приложение может запустить любую из доступных служб определения местоположения, в то время как Ваше приложение работает на переднем плане или фоне. Кроме того, службы, позволяющие Вашему приложению быть запущенным в фоновом режиме, продолжают делать так.Для получения дополнительной информации о
NSLocationAlwaysUsageDescription
ключ, посмотрите информационную Ключевую Ссылку Списка свойств.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 8.0 и позже.
-
Возвращает состояние авторизации приложения для использования служб определения местоположения.
Объявление
Swift
class func authorizationStatus() -> CLAuthorizationStatus
Objective C
+ (CLAuthorizationStatus)authorizationStatus
Возвращаемое значение
Значение, указывающее, разрешено ли приложение использовать службы определения местоположения.
Обсуждение
Состоянием авторизации данного приложения управляет система и определяют несколько факторов. Приложения должны быть явно разрешены использовать службы определения местоположения пользователем, и службы определения местоположения должны самостоятельно в настоящее время включаться для системы. Когда Ваше приложение сначала пытается использовать службы определения местоположения, запрос на авторизацию пользователя выведен на экран автоматически.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.2 и позже.
-
Возвращает булево значение, указывающее, включены ли службы определения местоположения на устройстве.
Объявление
Swift
class func locationServicesEnabled() -> Bool
Objective C
+ (BOOL)locationServicesEnabled
Возвращаемое значение
YES
true
если включены службы определения местоположения;NO
false
если они не.Обсуждение
Пользователь может включить или отключить службы определения местоположения из приложения Настроек путем переключения переключателя Location Services в целом.
Необходимо проверить возвращаемое значение этого метода прежде, чем запустить обновления информации о местоположении, чтобы определить, включили ли пользователю службы определения местоположения для текущего устройства. Службы определения местоположения предлагают пользователям в первый раз, когда они пытаются использовать связанную с расположением информацию в приложении, но не запрашивает последующие попытки. Если пользователь отклоняет использование служб определения местоположения, и Вы пытаетесь запустить обновления информации о местоположении так или иначе, менеджер расположения сообщает об ошибке ее делегату.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
Возвращает булево значение, указывающее, поддерживает ли устройство задержанные обновления информации о местоположении.
Объявление
Swift
class func deferredLocationUpdatesAvailable() -> Bool
Objective C
+ (BOOL)deferredLocationUpdatesAvailable
Возвращаемое значение
YES
true
если устройство поддерживает задержанные обновления информации о местоположении илиNO
false
если это не делает.Обсуждение
Задержанные обновления информации о местоположении являются способом для менеджера расположения часто избегать будить фоновое приложение для поставки изменений расположения. Обычно, когда приложение хочет обновления информации о местоположении в фоновом режиме, приложение должно быть разбужено каждый раз, когда поступает новое событие. Пробуждение приложения использует питание, которое в некоторых ситуациях могло бы быть потрачено впустую, если приложение ничего не может сделать с информацией о расположении кроме журнала это и возвратиться для сна так или иначе. Когда Ваше приложение может сделать что-то полезное с данными и затем обработать обновления одновременно, задержка обновлений информации о местоположении предоставляет Вам возможность ожидать до времени.
Задержанные обновления информации о местоположении требуют присутствия аппаратных средств GPS и не могут поддерживаться на всех устройствах на iOS.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает булево значение, указывающее, доступно ли значительное отслеживание изменений расположения.
Объявление
Swift
class func significantLocationChangeMonitoringAvailable() -> Bool
Objective C
+ (BOOL)significantLocationChangeMonitoringAvailable
Возвращаемое значение
YES
true
если контроль изменения расположения доступен;NO
false
если это не.Обсуждение
Этот метод указывает, в состоянии ли устройство сообщить, что обновления на основе значительного расположения изменяются только. Эта возможность обеспечивает огромную экономию электроэнергии для приложений, которые хотят отследить приблизительное расположение пользователя и не нужны в очень точной информации о положении.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
Возвращает булево значение, указывающее, в состоянии ли менеджер расположения генерировать связанные с заголовком события.
Объявление
Swift
class func headingAvailable() -> Bool
Objective C
+ (BOOL)headingAvailable
Возвращаемое значение
YES
true
если заголовок данных доступен;NO
false
если это не.Обсуждение
Заголовок данных может не быть доступным на всех основанных на iOS устройствах. Необходимо проверить значение, возвращенное этим методом прежде, чем попросить, чтобы менеджер расположения поставил связанные с заголовком события.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
Возвращает булевскую переменную, указывающую, поддерживает ли устройство контроль области с помощью указанного класса.
Объявление
Swift
class func isMonitoringAvailableForClass(_
regionClass
: AnyClass!) -> BoolObjective C
+ (BOOL)isMonitoringAvailableForClass:(Class)
regionClass
Параметры
regionClass
Контрольный класс области от платформы Набора Карты. Этот класс должен быть убыванием от
CLRegion
класс.Возвращаемое значение
YES
true
если устройство способно к контролирующим областям с помощью указанного класса илиNO
false
если это не.Обсуждение
Доступность контрольной поддержки области зависит от аппаратного настоящего на устройстве. Этот метод не принимает во внимание доступность служб определения местоположения или факта, что пользователь, возможно, отключил их для приложения или системы; необходимо определить состояние авторизации приложения отдельно.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 7.0 и позже.
См. также
-
Возвращает булевскую переменную, указывающую ли расположение поддержек устройства маркеров Bluetooth.
Объявление
Swift
class func isRangingAvailable() -> Bool
Objective C
+ (BOOL)isRangingAvailable
Возвращаемое значение
YES
true
если расположение поддержек устройства илиNO
false
если это не делает.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 7.0 и позже.
-
delegate
СвойствоОбъект делегата получить события обновления.
Объявление
Swift
unowned(unsafe) var delegate: CLLocationManagerDelegate!
Objective C
@property(assign, nonatomic) id< CLLocationManagerDelegate > delegate
Специальные замечания
В iOS это свойство объявляется как
nonatomic
. В OS X это объявляется какatomic
.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 2.0 и позже.
-
Запускает генерацию обновлений, сообщающих о текущем расположении пользователя.
Объявление
Swift
func startUpdatingLocation()
Objective C
- (void)startUpdatingLocation
Обсуждение
Этот метод сразу возвращается. Вызов этих причин метода, которые фиксирует менеджер расположения для получения начального расположения (который может занять несколько секунд) и уведомь делегата путем вызова
locationManager:didUpdateLocations:
метод. (В iOS 5 и ранее, вызовы диспетчера расположенияlocationManager:didUpdateToLocation:fromLocation:
метод вместо этого.) После этого получатель генерирует события обновления прежде всего когда значение вdistanceFilter
свойство превышено. Обновления могут быть поставлены в других ситуациях все же. Например, если аппаратные средства собирают более точное чтение расположения, получатель может отправить другое уведомление.Вызов этого метода несколько раз по очереди автоматически не приводит к новым сгенерированным событиям. Вызов
stopUpdatingLocation
промежуточный, однако, действительно заставляет новое начальное событие быть отправленным в следующий раз, когда Вы вызываете этот метод.Если Вы запускаете эту службу, и Ваше приложение приостановлено, система останавливает поставку событий, пока Ваше приложение не начинает работать снова (или на переднем плане или на фоне). Если Ваше приложение завершается, поставка новых событий расположения останавливается в целом. Поэтому, если Ваше приложение должно получить события расположения, в то время как в фоновом режиме, оно должно включать
UIBackgroundModes
ключ (сlocation
значение) вInfo.plist
файл.В дополнение к Вашему объекту делегата реализация
locationManager:didUpdateLocations:
метод, это должно также реализоватьlocationManager:didFailWithError:
метод для ответа на потенциальные ошибки.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 2.0 и позже.
-
Останавливает генерацию обновлений информации о местоположении.
Объявление
Swift
func stopUpdatingLocation()
Objective C
- (void)stopUpdatingLocation
Обсуждение
Вызовите этот метод каждый раз, когда Ваш код больше не должен получать связанные с расположением события. Отключение поставки события дает получателю опцию отключения надлежащих аппаратных средств (и таким образом экономия электроэнергии), когда никаким клиентам не нужны данные расположения. Можно всегда перезапускать генерацию обновлений информации о местоположении путем вызова
startUpdatingLocation
метод снова.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
pausesLocationUpdatesAutomatically
СвойствоБулево значение, указывающее, может ли менеджер расположения объект приостановить обновления информации о местоположении.
Объявление
Swift
var pausesLocationUpdatesAutomatically: Bool
Objective C
@property(assign, nonatomic) BOOL pausesLocationUpdatesAutomatically
Обсуждение
Разрешение менеджеру расположения приостановить обновления может улучшить время работы от батареи относительно целевого устройства, не жертвуя данными расположения. Когда это свойство установлено в
YES
true
, обновления пауз менеджера расположения (и выключает надлежащие аппаратные средства), время от времени, когда вряд ли изменятся данные расположения. Например, если пользователь останавливается для еды при использовании приложения навигации, менеджер расположения мог бы приостановить обновления сроком на время. Можно помочь определению того, когда приостановить обновления информации о местоположении путем присвоения значенияactivityType
свойство.Значение по умолчанию этого свойства
YES
true
.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 6.0 и позже.
См. также
-
distanceFilter
СвойствоМинимальное расстояние (измеренный в метрах) устройство должно переместиться горизонтально, прежде чем событие обновления сгенерировано.
Объявление
Swift
var distanceFilter: CLLocationDistance
Objective C
@property(assign, nonatomic) CLLocationDistance distanceFilter
Обсуждение
Это расстояние измеряется относительно ранее поставленного расположения. Используйте значение
kCLDistanceFilterNone
быть уведомленным относительно всех перемещений. Значение по умолчанию этого свойстваkCLDistanceFilterNone
.Это свойство используется только в сочетании со стандартными службами определения местоположения и не используется при наблюдении значительных изменений расположения.
Специальные замечания
В iOS это свойство объявляется как
nonatomic
. В OS X это объявляется какatomic
.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 2.0 и позже.
-
desiredAccuracy
СвойствоТочность данных расположения.
Объявление
Swift
var desiredAccuracy: CLLocationAccuracy
Objective C
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy
Обсуждение
Получатель прилагает все усилия для достижения требуемой точности; однако, фактическая точность не гарантируется.
Необходимо присвоить значение этому свойству, которое подходяще для сценария использования. Например, при необходимости в текущем расположении только в километре необходимо указать
kCLLocationAccuracyKilometer
и нетkCLLocationAccuracyBestForNavigation
. Определение расположения с большей точностью требует большего количества времени и большего количества питания.Запрашивая высокоточные данные расположения, начальное событие, поставленное службой определения местоположения, может не иметь точности, которую Вы запросили. Служба определения местоположения поставляет начальное событие как можно быстрее. Это тогда продолжает определять расположение с точностью, Вы запросили и поставляете дополнительные события, по мере необходимости, когда те данные доступны.
Значение по умолчанию этого свойства
kCLLocationAccuracyBest
.Это свойство используется только в сочетании со стандартными службами определения местоположения и не используется при наблюдении значительных изменений расположения.
Специальные замечания
В iOS это свойство объявляется как
nonatomic
. В OS X это объявляется какatomic
.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 2.0 и позже.
-
activityType
СвойствоТип пользовательского действия связался с обновлениями информации о местоположении.
Объявление
Swift
var activityType: CLActivityType
Objective C
@property(assign, nonatomic) CLActivityType activityType
Обсуждение
Когда обновления информации о местоположении могут быть автоматически приостановлены, менеджер расположения использует информацию в этом свойстве как сигнал для определения. Приостановка обновлений дает системе возможность сэкономить электроэнергию в ситуациях, где вряд ли будет изменяться расположение пользователя. Например, если тип действия
CLActivityTypeAutomotiveNavigation
и никакие изменения расположения недавно не произошли, радио могли бы быть выключены, пока перемещение не обнаруживается снова.Значение по умолчанию этого свойства
CLActivityTypeOther
.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 6.0 и позже.
-
Запускает генерацию обновлений на основе значительных изменений расположения.
Объявление
Swift
func startMonitoringSignificantLocationChanges()
Objective C
- (void)startMonitoringSignificantLocationChanges
Обсуждение
Этот метод инициирует поставку событий расположения асинхронно, возвращаясь после вызова его. События расположения поставлены Вашему делегату
locationManager:didUpdateLocations:
метод. Первое событие, которое будет поставлено, обычно является последний раз кэшируемым событием расположения (если таковые имеются), но может быть более новым событием при некоторых обстоятельствах. Получение текущей фиксации расположения может занять несколько дополнительных секунд, так, несомненно, сможет проверить метки времени на событиях расположения в Вашем методе делегата.После возврата текущего расположения фиксируют, получатель генерирует события обновления только, когда обнаруживается существенное изменение в расположении пользователя. Это не полагается на значение в
distanceFilter
свойство для генерации событий. Вызов этого метода несколько раз по очереди автоматически не приводит к новым сгенерированным событиям. ВызовstopMonitoringSignificantLocationChanges
промежуточный, однако, действительно заставляет новое начальное событие быть отправленным в следующий раз, когда Вы вызываете этот метод.Если Вы запускаете эту службу, и Ваше приложение впоследствии завершается, система автоматически повторно запускает приложение в фон, если поступает новое событие. В таком случае словарь опций передал
application:willFinishLaunchingWithOptions:
иapplication:didFinishLaunchingWithOptions:
методы Вашего делегата приложения содержат ключUIApplicationLaunchOptionsLocationKey
указать, что Ваше приложение было запущено из-за события расположения. На перезапуск необходимо все еще сконфигурировать менеджера расположения объект и вызвать этот метод, чтобы продолжать получать события расположения. При перезапуске служб определения местоположения текущее событие сразу поставлено делегату. Кроме того,location
свойство Вашего менеджера расположения, объект заполняется с новым объектом расположения даже перед запуском служб определения местоположения.В дополнение к Вашему объекту делегата реализация
locationManager:didUpdateLocations:
метод, это должно также реализоватьlocationManager:didFailWithError:
метод для ответа на потенциальные ошибки.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
Останавливает поставку событий расположения на основе значительных изменений расположения.
Объявление
Swift
func stopMonitoringSignificantLocationChanges()
Objective C
- (void)stopMonitoringSignificantLocationChanges
Обсуждение
Используйте этот метод для остановки поставки событий расположения, запущенной с помощью
startMonitoringSignificantLocationChanges
метод.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
Запускает генерацию обновлений, сообщающих о текущем заголовке пользователя.
Объявление
Swift
func startUpdatingHeading()
Objective C
- (void)startUpdatingHeading
Обсуждение
Этот метод сразу возвращается. Вызов этого метода, когда получатель останавливается, заставляет его получать первоначальный заголовок и уведомлять Вашего делегата. После этого получатель генерирует события обновления когда значение в
headingFilter
свойство превышено.Прежде, чем вызвать этот метод, необходимо всегда проверять
headingAvailable
свойство, чтобы видеть, поддерживается ли заголовок информации на текущем устройстве. Если заголовок информации не поддерживается, вызывание этого метода не имеет никакого эффекта и не приводит к поставке событий Вашему делегату.Вызов этого метода несколько раз по очереди автоматически не приводит к новым сгенерированным событиям. Вызов
stopUpdatingHeading
промежуточный, однако, действительно заставляет новое начальное событие быть отправленным в следующий раз, когда Вы вызываете этот метод.Если Вы запускаете эту службу, и Ваше приложение приостановлено, система останавливает поставку событий, пока Ваше приложение не начинает работать снова (или на переднем плане или на фоне). Если Ваше приложение завершается, поставка новых событий заголовка останавливается в целом и должна быть перезапущена Вашим кодом, когда повторно запускается приложение.
Возглавляющие события поставлены
locationManager:didUpdateHeading:
метод Вашего делегата. Если существует ошибка, вызовы диспетчера расположенияlocationManager:didFailWithError:
метод Вашего делегата вместо этого.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 3.0 и позже.
См. также
-
Останавливает генерацию заголовка обновлений.
Объявление
Swift
func stopUpdatingHeading()
Objective C
- (void)stopUpdatingHeading
Обсуждение
Вызовите этот метод каждый раз, когда Ваш код больше не должен получать связанные с заголовком события. Отключение поставки события дает получателю опцию отключения надлежащих аппаратных средств (и таким образом экономия электроэнергии), когда никаким клиентам не нужны данные расположения. Можно всегда перезапускать генерацию заголовка обновлений путем вызова
startUpdatingHeading
метод снова.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 3.0 и позже.
См. также
-
Отклоняет возглавляющее калибровочное представление от экрана сразу.
Объявление
Swift
func dismissHeadingCalibrationDisplay()
Objective C
- (void)dismissHeadingCalibrationDisplay
Обсуждение
Базовое Расположение использует возглавляющее калибровочное предупреждение для калибровки доступных аппаратных средств заголовка по мере необходимости. Дисплей этого представления является автоматическим, принимая Ваши поддержки делегата, выводящие на экран представление вообще. Если представление выведено на экран, можно использовать этот метод для отклонения его после надлежащего количества времени, чтобы гарантировать, что весьма надлежащим образом разрушен пользовательский интерфейс приложения.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 3.0 и позже.
-
headingFilter
СвойствоМинимальное угловое изменение (измеренный в градусах) требуемый генерировать новые события заголовка.
Объявление
Swift
var headingFilter: CLLocationDegrees
Objective C
@property(assign, nonatomic) CLLocationDegrees headingFilter
Обсуждение
Угловое расстояние измеряется относительно последнего поставленного возглавляющего события. Используйте значение
kCLHeadingFilterNone
быть уведомленным относительно всех перемещений. Значение по умолчанию этого свойства1
градус.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 3.0 и позже.
-
headingOrientation
СвойствоОриентация устройства для использования при вычислениях возглавляющих значений.
Объявление
Swift
var headingOrientation: CLDeviceOrientation
Objective C
@property(assign, nonatomic) CLDeviceOrientation headingOrientation
Обсуждение
При вычислениях возглавляющих значений менеджер расположения предполагает, что вершина устройства в режиме портрета представляет должный север (0 градусов) по умолчанию. Для приложений, работающих в других ориентациях, это может не всегда быть самой удобной ориентацией. Это свойство позволяет Вам указывать, какую ориентацию устройства Вы хотите, чтобы менеджер расположения использовал в качестве контрольной точки для должного севера.
Несмотря на то, что можно установить значение этого свойства к
CLDeviceOrientationUnknown
,CLDeviceOrientationFaceUp
, илиCLDeviceOrientationFaceDown
, выполнение так не имеет никакого эффекта на контрольную точку ориентации. Точка исходной ссылки сохраняется вместо этого.Изменение значения в этом свойстве влияет, только те, которые возглавляют значения, сообщили после того, как внесено изменение.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
Начинает контролировать указанную область.
Объявление
Swift
func startMonitoringForRegion(_
region
: CLRegion!)Objective C
- (void)startMonitoringForRegion:(CLRegion *)
region
Параметры
region
Объект области, определяющий границу для контроля. Этот параметр не должен быть
nil
.Обсуждение
Необходимо вызвать этот метод один раз для каждой области, которую Вы хотите контролировать. Если существующая область с тем же идентификатором уже контролируется приложением, старая область заменяется новой. Области Вы добавляете использование этого метода, совместно используются всем менеджером расположения объекты в Вашем приложении и сохранены в
monitoredRegions
свойство.События области поставлены
locationManager:didEnterRegion:
иlocationManager:didExitRegion:
методы Вашего делегата. Если существует ошибка, вызовы диспетчера расположенияlocationManager:monitoringDidFailForRegion:withError:
метод Вашего делегата вместо этого.Приложение может зарегистрировать до 20 областей за один раз. Чтобы сообщить, что область изменяется своевременно, контрольная служба области требует сетевого соединения.
В iOS 6, областях с радиусом между 1-и 400-метровой работой лучше над iPhone 4S или более поздними устройствами. (В iOS 5, областях с радиусом между 1-и 150-метровой работой лучше над iPhone 4S и более поздними устройствами.) На этих устройствах приложение может ожидать получать надлежащую вводимую область, или область вышла из уведомления в течение 3 - 5 минут в среднем, если не раньше.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 5.0 и позже.
См. также
-
Остановки, контролирующие указанную область.
Объявление
Swift
func stopMonitoringForRegion(_
region
: CLRegion!)Objective C
- (void)stopMonitoringForRegion:(CLRegion *)
region
Параметры
region
Объект области, в настоящее время контролируемый. Этот параметр не должен быть
nil
.Обсуждение
Если указанный объект области в настоящее время не контролируется, этот метод не имеет никакого эффекта.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
См. также
-
monitoredRegions
СвойствоНабор совместно используемых областей, контролируемых всем менеджером расположения объекты. (только для чтения)
Объявление
Swift
var monitoredRegions: Set<NSObject>! { get }
Objective C
@property(readonly, nonatomic, copy) NSSet *monitoredRegions
Обсуждение
Вы не можете добавить области к этому свойству непосредственно. Вместо этого необходимо зарегистрировать области путем вызова
startMonitoringForRegion:
метод. Области в этом свойстве совместно используются всеми экземплярамиCLLocationManager
класс в Вашем приложении.Объекты в этом наборе могут не обязательно быть теми же объектами, которые Вы указали в регистрационное время. Только сами данные области сохраняются системой. Поэтому единственный способ однозначно определить зарегистрированную область использует
identifier
свойство.Менеджер расположения сохраняет данные области между запусками Вашего приложения. Если Ваше приложение завершается и затем повторно запускается, содержание этого свойства повторно заполняется с объектами области, содержащими ранее зарегистрированные данные.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
maximumRegionMonitoringDistance
СвойствоСамое большое граничное расстояние, которое может быть присвоено области. (только для чтения)
Объявление
Swift
var maximumRegionMonitoringDistance: CLLocationDistance { get }
Objective C
@property(readonly, nonatomic) CLLocationDistance maximumRegionMonitoringDistance
Обсуждение
Это свойство определяет самое большое граничное расстояние, позволенное от центральной точки области. Попытка контролировать область с расстоянием, больше, чем это значение, заставляет менеджера расположения отправлять a
kCLErrorRegionMonitoringFailure
ошибка делегату.Если контроль области недоступен или не поддерживаемый, значение в этом свойстве
-1
.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
Запускает поставку уведомлений для маркеров в указанной области.
Объявление
Swift
func startRangingBeaconsInRegion(_
region
: CLBeaconRegion!)Objective C
- (void)startRangingBeaconsInRegion:(CLBeaconRegion *)
region
Параметры
region
Объект области, определяющий информацию об идентификации для предназначенных маркеров. Число маркеров, представленных этим объектом области, зависит, на котором идентификатор оценивает Вас использование для инициализации его. Маркеры должны соответствовать все идентификаторы, которые Вы указываете. Этот метод копирует информацию об области, в которой он нуждается от объекта, который Вы обеспечиваете.
Обсуждение
После того, как зарегистрированный, менеджер расположения сообщает о любых маркерах, с которыми встречаются, его делегату путем вызова
locationManager:didRangeBeacons:inRegion:
метод. Если существует ошибка при регистрации указанной области маркера, вызовы диспетчера расположения его делегатlocationManager:rangingBeaconsDidFailForRegion:withError:
метод и предоставляет надлежащую ошибочную информацию.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 7.0 и позже.
-
Останавливает поставку уведомлений для указанной области маркера.
Объявление
Swift
func stopRangingBeaconsInRegion(_
region
: CLBeaconRegion!)Objective C
- (void)stopRangingBeaconsInRegion:(CLBeaconRegion *)
region
Параметры
region
Область, идентифицирующая маркеры. Объект, который Вы указываете, не должен быть тем же самым объектом, который Вы зарегистрировали, но атрибуты маркера должны быть тем же.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 7.0 и позже.
-
Получает состояние области асинхронно.
Объявление
Swift
func requestStateForRegion(_
region
: CLRegion!)Objective C
- (void)requestStateForRegion:(CLRegion *)
region
Параметры
region
Область, состояние которой Вы хотите знать. Этот объект должен быть экземпляром одного из стандартных подклассов области, предоставленных Набором Карты. Вы не можете использовать этот метод для определения состояния пользовательских областей, которые Вы определяете сами.
Обсуждение
Этот метод выполняет запрос асинхронно и поставляет результаты делегату менеджера расположения. Необходимо реализовать
locationManager:didDetermineState:forRegion:
метод в делегате для получения результатов.Если
region
параметр содержит неизвестный тип объекта области, этот метод ничего не делает.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 7.0 и позже.
-
rangedRegions
СвойствоНабор областей, в настоящее время прослеживаемых, используя расположение. (только для чтения)
Объявление
Swift
var rangedRegions: Set<NSObject>! { get }
Objective C
@property(readonly, nonatomic, copy) NSSet *rangedRegions
Обсуждение
Объекты в наборе являются экземплярами
CLBeaconRegion
класс.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 7.0 и позже.
См. также
-
Запускает генерацию связанных с посещением событий.
Объявление
Swift
func startMonitoringVisits()
Objective C
- (void)startMonitoringVisits
Обсуждение
Вызов этого метода начинает поставку связанных с посещением событий к Вашему приложению. Включение событий посещения для одного менеджера расположения включает события посещения для всего другого менеджера расположения объекты в Вашем приложении. Когда новое событие посещения поступает, менеджер расположения, объект поставляет событие
locationManager:didVisit:
метод его делегата.Если Ваше приложение завершается, в то время как эта служба активна, система повторно запускает Ваше приложение, когда новые события посещения готовы быть поставленными. На перезапуск воссоздайте своего менеджера расположения, возражают и присваивают делегата, чтобы начать получать события посещения. Вы не должны вызывать этот метод снова для перезапуска поставки событий посещения, но вызов его не причиняет вреда.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Останавливает поставку связанных с посещением событий.
Объявление
Swift
func stopMonitoringVisits()
Objective C
- (void)stopMonitoringVisits
Обсуждение
Вызов этого метода отключает поставку связанных с посещением событий для Вашего приложения.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
allowDeferredLocationUpdatesUntilTraveled (_: тайм-аут:) - allowDeferredLocationUpdatesUntilTraveled:timeout:
Просит менеджер расположения задерживать поставку обновлений информации о местоположении, пока не удовлетворены указанные критерии.
Объявление
Swift
func allowDeferredLocationUpdatesUntilTraveled(_
distance
: CLLocationDistance, timeouttimeout
: NSTimeInterval)Objective C
- (void)allowDeferredLocationUpdatesUntilTraveled:(CLLocationDistance)
distance
timeout:(NSTimeInterval)timeout
Параметры
distance
Расстояние (в метрах) от текущего расположения, которое должно быть перемещено перед резюме поставки события. Для указания неограниченного расстояния передайте
CLLocationDistanceMax
постоянный.timeout
Количество времени (в секундах) с текущего времени, которое должно передать перед резюме поставки события. Для указания неограниченного количества времени передайте
CLTimeIntervalMax
постоянный.Обсуждение
Вызовите этот метод в ситуациях, где Вы хотите данные расположения с точностью GPS, но не должны обрабатывать те данные сразу же. Если Ваше приложение в фоновом режиме, и система в состоянии оптимизировать свое использование питания, менеджер расположения говорит аппаратным средствам GPS хранить новые расположения внутренне до указанного расстояния, или условиям тайм-аута удовлетворяют. Когда один или оба критерия удовлетворены, менеджер расположения концы задержанные расположения путем вызова
locationManager:didFinishDeferredUpdatesWithError:
метод его делегата и поставляет кэшируемые расположенияlocationManager:didUpdateLocations:
метод. Если Ваше приложение находится на переднем плане, менеджер расположения не задерживает поставление событий, но действительно контролирует для указанных критериев. Если Ваше приложение перемещается в фон, прежде чем критерии будут удовлетворены, менеджер расположения может начать задерживать поставку событий.Запустите поставку обновлений информации о местоположении прежде, чем вызвать этот метод. Наиболее распространенное место для вызова этого метода находится в делегате
locationManager:didUpdateLocations:
метод. После обработки любых новых расположений вызовите этот метод, если Вы хотите задержать будущие обновления до расстояния, или критерии времени удовлетворены. Если новые события поступают, и Ваше приложение в фоновом режиме, события кэшируются, и их поставка задерживается соответственно.Ваш делегат
locationManager:didFinishDeferredUpdatesWithError:
метод вызывают точно один раз в течение каждого раза, когда Вы вызываете этот метод. Если Вы вызываете этот метод дважды по очереди, менеджер расположения отменяет предыдущую отсрочку прежде, чем запустить новую. Поэтому необходимо отслеживать то, задерживаются ли обновления в настоящее время и избегают вызывать этот метод многократно по очереди. Если Вы хотите изменить критерии отсрочки по какой-либо причине, и поэтому вызвать этот метод снова, подготовлены получить akCLErrorDeferredCanceled
ошибка в Вашем делегатеlocationManager:didFinishDeferredUpdatesWithError:
метод.Даже если указанное расстояние и критерии тайм-аута не встречены, после вызова этого метода менеджер расположения может поставить обновления информации о местоположении. Например, если кэши раньше хранили задержанные выборки, становятся полными, менеджер расположения может поставить кэшируемые выборки, таким образом, это может собрать новые. Поставка выборок автоматически не заканчивает задержанный режим для Вашего приложения. Менеджер расположения возобновляет задержанный режим, когда он в состоянии сделать так.
Задержанные обновления поставлены только, когда система вводит состояние низкой мощности. Задержанные обновления не происходят во время отладки, потому что XCode препятствует тому, чтобы Ваше приложение спало и таким образом препятствует тому, чтобы система ввела то состояние низкой мощности.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 6.0 и позже.
См. также
-
Отменяет отсрочку обновлений информации о местоположении для этого приложения.
Объявление
Swift
func disallowDeferredLocationUpdates()
Objective C
- (void)disallowDeferredLocationUpdates
Обсуждение
Вызовите этот метод при предыдущей задержке поставки события расположения с помощью
allowDeferredLocationUpdatesUntilTraveled:timeout:
метод и теперь хочет возобновить поставку событий в нормальных интервалах.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 6.0 и позже.
-
location
СвойствоПоследний раз полученное пользовательское расположение. (только для чтения)
Объявление
Swift
@NSCopying var location: CLLocation! { get }
Objective C
@property(readonly, nonatomic, copy) CLLocation *location
Обсуждение
Значение этого свойства
nil
если никогда не получались никакие данные расположения.В iOS 4.0 и позже, это свойство может содержать более свежий объект расположения во время запуска. В частности, если значительные обновления информации о местоположении работают, и Ваше приложение завершается, это свойство обновляется с новыми данными расположения, когда Ваше приложение повторно запускается (и Вы создаете нового менеджера расположения объект). Эти данные расположения могут быть более свежими, чем последнее событие расположения, обработанное Вашим приложением.
Это всегда - хорошая идея проверить метку времени расположения, сохраненного в этом свойстве. Если получатель в настоящее время собирает данные расположения, но минимальный фильтр расстояния является большим, возвращенное расположение могло бы быть относительно старым. Если это, можно остановить получатель и запустить его снова для принуждения обновления.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
heading
СвойствоЗаголовок, о котором последний раз сообщают. (только для чтения)
Объявление
Swift
@NSCopying var heading: CLHeading! { get }
Objective C
@property(readonly, nonatomic, copy) CLHeading *heading
Обсуждение
Значение этого свойства
nil
если никогда не инициировался заголовок обновлений.Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.0 и позже.
-
Булево значение, указывающее, включены ли службы определения местоположения на устройстве. (только для чтения)
Оператор осуждения
Используйте
locationServicesEnabled
метод класса вместо этого.Объявление
Objective C
@property(readonly, nonatomic) BOOL locationServicesEnabled
Обсуждение
В iOS пользователь может включить или отключить службы определения местоположения с помощью средств управления в Настройках> Службы определения местоположения. В OS X пользователь может включить или отключить службы определения местоположения от системного предпочтения Безопасности и Конфиденциальности.
Необходимо проверить это свойство прежде, чем запустить обновления информации о местоположении, чтобы определить, включили ли пользователю службы определения местоположения для текущего устройства. Если это свойство содержит значение
NO
false
и Вы запускаете обновления информации о местоположении так или иначе, Базовая платформа Расположения предлагает пользователю с предупреждением подтверждения выяснение, должны ли быть повторно включены службы определения местоположения.Специальные замечания
В iOS это свойство объявляется как
nonatomic
. В OS X это объявляется какatomic
.Оператор импорта
Objective C
@import CoreLocation;
Доступность
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 4.0.
См. также
-
Булево значение, указывающее, в состоянии ли менеджер расположения генерировать связанные с заголовком события. (только для чтения)
Оператор осуждения
Используйте
headingAvailable
метод класса вместо этого.Объявление
Objective C
@property(readonly, nonatomic) BOOL headingAvailable
Обсуждение
Заголовок данных может не быть доступным на всех основанных на iOS устройствах. Необходимо проверить значение этого свойства прежде, чем попросить, чтобы менеджер расположения поставил связанные с заголовком события.
Оператор импорта
Objective C
@import CoreLocation;
Доступность
Доступный в iOS 3.0 и позже.
Осуждаемый в iOS 4.0.
См. также
-
+ regionMonitoringAvailable
(iOS 7.0)Возвращает булево значение, указывающее, поддерживается ли контроль области на текущем устройстве.
Оператор осуждения
Использовать
isMonitoringAvailableForClass:
вместо этого.Объявление
Objective C
+ (BOOL)regionMonitoringAvailable
Возвращаемое значение
YES
true
если контроль области доступен;NO
false
если это не.Обсуждение
Поддержка контроля области может не быть доступной на всех устройствах и моделях. Необходимо проверить значение этого свойства прежде, чем попытаться установить любые области или инициировать контроль области.
Даже если контрольная поддержка области присутствует на устройстве, это может все еще быть недоступно, потому что пользователь отключил его для текущего приложения или для всех приложений.
Специальные замечания
Этот класс осуждается в iOS 7 и позже но все еще поддерживается в OS X.
Оператор импорта
Objective C
@import CoreLocation;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
+ regionMonitoringEnabled
(iOS 6.0)Возвращает булево значение, указывающее, включается ли в настоящее время контроль области.
Оператор осуждения
Использовать
isMonitoringAvailableForClass:
иauthorizationStatus
вместо этого.Объявление
Objective C
+ (BOOL)regionMonitoringEnabled
Возвращаемое значение
YES
true
если контроль области доступен и в настоящее время включается;NO
false
если это недоступно или не включенное.Обсуждение
В iOS пользователь может включить или отключить службы определения местоположения (включая контроль области) использование средств управления в Настройках> Службы определения местоположения.
Необходимо проверить возвращаемое значение этого метода перед стартовыми контрольными обновлениями области, чтобы определить, позволяет ли пользователь в настоящее время службам определения местоположения использоваться вообще. Если возвращается этот метод
NO
false
и Вы запускаете контрольные обновления области так или иначе, Базовая платформа Расположения предлагает пользователю подтверждать выяснение, должны ли быть повторно включены службы определения местоположения.Этот метод не проверяет, чтобы видеть, поддерживаются ли контрольные возможности области фактически устройством. Поэтому необходимо также проверить возвращаемое значение
regionMonitoringAvailable
метод класса прежде, чем попытаться запустить контрольные службы области.Оператор импорта
Objective C
@import CoreLocation;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 6.0.
См. также
-
Начинает контролировать указанную область для граничных пересечений.
Оператор осуждения
Использовать
startMonitoringForRegion:
вместо этого.Объявление
Objective C
- (void)startMonitoringForRegion:(CLRegion *)
region
desiredAccuracy:(CLLocationAccuracy)accuracy
Параметры
region
Объект области, определяющий границу для контроля. Этот параметр не должен быть
nil
.accuracy
Расстояние мимо границы (измеренный в метрах), в котором можно генерировать уведомления. Когда пользователь близко к краю границы, можно использовать это значение для предотвращения поставки многократных уведомлений.
Обсуждение
Необходимо вызвать этот метод отдельно для каждой области, которую Вы хотите контролировать. Если существующая область с тем же идентификатором уже контролируется приложением, старая область заменяется новой. Области Вы добавляете использование этого метода, совместно используются всем менеджером расположения объекты в Вашем приложении и сохранены в
monitoredRegions
свойство.Если Вы начинаете контролировать область, и Ваше приложение впоследствии завершается, система автоматически повторно запускает его в фон, если пересечена граница области. В таком случае словарь опций передал
application:didFinishLaunchingWithOptions:
метод Вашего делегата приложения содержит ключUIApplicationLaunchOptionsLocationKey
указать, что Ваше приложение было запущено из-за связанного с расположением события. Кроме того, создание нового менеджера расположения и присвоение делегата приводят к поставке соответствующих сообщений области. Недавно создаваемый менеджер расположенияlocation
даже если службы определения местоположения не включены, свойство также содержит текущее расположение.События области поставлены
locationManager:didEnterRegion:
иlocationManager:didExitRegion:
методы Вашего делегата. Если существует ошибка, вызовы диспетчера расположенияlocationManager:monitoringDidFailForRegion:withError:
метод Вашего делегата вместо этого.Оператор импорта
Objective C
@import CoreLocation;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 6.0.
-
Предоставленная приложением строка, описывающая причину использования служб определения местоположения.
Оператор осуждения
Установите строку цели с помощью
NSLocationAlwaysUsageDescription
илиNSLocationWhenInUseUsageDescription
введите приложениеInfo.plist
вместо этого.Объявление
Objective C
@property(copy, nonatomic) NSString *purpose
Обсуждение
Если это свойство не
nil
и система должна попросить согласие пользователя использовать службы определения местоположения, это выводит на экран предоставленную строку. Можно использовать эту строку для объяснения, почему приложение использует службы определения местоположения.Необходимо установить значение этого свойства до запуска любых служб определения местоположения. Поскольку строка в конечном счете выведена на экран пользователю, необходимо всегда загружать ее из файла локализованных строк.
Оператор импорта
Objective C
@import CoreLocation;
Доступность
Доступный в iOS 3.2 и позже.
Осуждаемый в iOS 6.0.
-
Эти константы указывают, разрешено ли приложение использовать службы определения местоположения.
Объявление
Swift
enum CLAuthorizationStatus : Int32 { case NotDetermined case Restricted case Denied case AuthorizedAlways case AuthorizedWhenInUse }
Objective C
typedef enum { kCLAuthorizationStatusNotDetermined = 0, kCLAuthorizationStatusRestricted, kCLAuthorizationStatusDenied, kCLAuthorizationStatusAuthorized, kCLAuthorizationStatusAuthorizedAlways = kCLAuthorizationStatusAuthorized, kCLAuthorizationStatusAuthorizedWhenInUse } CLAuthorizationStatus;
Константы
-
NotDetermined
kCLAuthorizationStatusNotDetermined
Пользователь еще не сделал выбор относительно того, может ли это приложение использовать службы определения местоположения.
Доступный в iOS 4.2 и позже.
-
Restricted
kCLAuthorizationStatusRestricted
Это приложение не разрешено использовать службы определения местоположения. Пользователь не может изменить состояние этого приложения, возможно вследствие активных ограничений, таких как существующий родительский контроль.
Доступный в iOS 4.2 и позже.
-
Denied
kCLAuthorizationStatusDenied
Пользователь явно отклонил использование служб определения местоположения для этого приложения, или службы определения местоположения в настоящее время отключаются в Настройках.
Доступный в iOS 4.2 и позже.
-
kCLAuthorizationStatusAuthorized
Это приложение разрешено использовать службы определения местоположения.
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
AuthorizedAlways
kCLAuthorizationStatusAuthorizedAlways
Это приложение разрешено запустить службы определения местоположения в любое время. Эта авторизация позволяет Вам использовать все службы определения местоположения, включая тех для контроля областей и значительных изменений расположения.
Доступный в iOS 8.0 и позже.
-
AuthorizedWhenInUse
kCLAuthorizationStatusAuthorizedWhenInUse
Это приложение разрешено запустить большинство служб определения местоположения при выполнении на переднем плане. Эта авторизация не позволяет Вам использовать APIs, который мог запустить Ваше приложение в ответ на событие, такое как контроль области и значительные службы изменения расположения.
Доступный в iOS 8.0 и позже.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 4.2 и позже.
-
-
Константы для указания максимальных значений во время задержанных обновлений.
Объявление
Swift
let CLLocationDistanceMax: CLLocationDistance let CLTimeIntervalMax: NSTimeInterval
Objective C
extern const CLLocationDistance CLLocationDistanceMax; extern const NSTimeInterval CLTimeIntervalMax;
Константы
-
Эти константы указывают тип действия, связанного с обновлениями информации о местоположении.
Объявление
Swift
enum CLActivityType : Int { case Other case AutomotiveNavigation case Fitness case OtherNavigation }
Objective C
enum { CLActivityTypeOther = 1, CLActivityTypeAutomotiveNavigation, CLActivityTypeFitness, CLActivityTypeOtherNavigation, }; typedef NSInteger CLActivityType;
Константы
-
Other
CLActivityTypeOther
Менеджер расположения используется для неизвестного действия.
Доступный в iOS 6.0 и позже.
-
AutomotiveNavigation
CLActivityTypeAutomotiveNavigation
Менеджер расположения используется в частности во время автомобильной навигации для отслеживания изменений расположения в автомобиле. Это действие могло бы заставить обновления информации о местоположении быть приостановленными только, когда механизм не перемещается в течение длительного периода времени.
Доступный в iOS 6.0 и позже.
-
Fitness
CLActivityTypeFitness
Менеджер расположения используется для отслеживания любого связанного с пешеходом действия. Это действие могло бы заставить обновления информации о местоположении быть приостановленными только, когда пользователь не перемещает значительное расстояние в течение времени.
Доступный в iOS 6.0 и позже.
-
OtherNavigation
CLActivityTypeOtherNavigation
Менеджер расположения используется для отслеживания перемещений за другие типы автомобильной навигации, которые не являются связанным автомобилем. Например, Вы использовали бы это для отслеживания навигации судном, поездом или плоскостью. Не используйте этот тип для пешеходного отслеживания навигации. Это действие могло бы заставить обновления информации о местоположении быть приостановленными только, когда механизм не перемещает значительное расстояние в течение времени.
Доступный в iOS 6.0 и позже.
Оператор импорта
Objective C
@import CoreLocation;
Swift
import CoreLocation
Доступность
Доступный в iOS 6.0 и позже.
-