Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы CoreLocation ссылка класса CLLocationManager

Опции
Развертывание Target:

На этой странице
Язык:

CLLocationManager

CLLocationManager класс является центральной точкой для конфигурирования поставки расположения - и связанные с заголовком события к Вашему приложению. Вы используете экземпляр этого класса для установления параметров, определяющих, когда расположение и возглавляющие события должны быть поставлены и запустить и остановить фактическую поставку тех событий. Можно также использовать менеджера расположения объект получить новое расположение и возглавляющие данные.

Менеджер расположения объект предоставляет поддержку для следующих связанных с расположением действий:

  • Отслеживание больших или маленьких изменений в текущем расположении пользователя с конфигурируемой степенью точности.

  • Создание отчетов о возглавляющих изменениях от встроенного компаса. (только iOS)

  • Контроль отличных областей интереса и генерация событий расположения, когда пользователь вводит или оставляет те области.

  • Задержка поставки обновлений информации о местоположении, в то время как приложение в фоновом режиме. (iOS 6 и позже только)

  • Создание отчетов о диапазоне к соседним маркерам.

Сконфигурировать и использовать a CLLocationManager объект поставить события:

  1. Всегда запрашивайте авторизацию использовать службы определения местоположения и проверку, чтобы видеть, доступны ли желаемые службы, как описано в Выяснении у Разрешения Использовать Службы определения местоположения.

  2. Создайте экземпляр CLLocationManager класс и хранилище сильная ссылка к нему где-нибудь в Вашем приложении.

    При хранении сильной ссылки менеджеру расположения, объект требуется, пока все задачи, включающие тот объект, не завершены. Поскольку большая часть менеджера расположения, которого задачи выполняют асинхронно, храня Вашего менеджера расположения в локальной переменной, недостаточна.

  3. Присвойте пользовательский объект delegate свойство. Этот объект должен соответствовать CLLocationManagerDelegate протокол.

  4. Сконфигурируйте любые дополнительные свойства, относящиеся к желаемой службе.

  5. Вызовите надлежащий метод запуска для начала поставки событий.

Все расположение - и связанные с заголовком обновления поставлено связанному объекту делегата, который является пользовательским объектом, который Вы обеспечиваете. Для получения информации о методах делегата Вы используете, чтобы получить события, видеть Ссылку на протокол CLLocationManagerDelegate.

Запрос разрешения использовать службы определения местоположения

Использование служб определения местоположения требует авторизации пользователя. Кроме того, некоторые службы определения местоположения требуют присутствия определенных аппаратных средств на данном устройстве. Например, заголовок информации доступен только на устройствах, содержащих аппаратный компас. До использования служб определения местоположения Ваше приложение должно запросить авторизацию от пользователя использовать те службы, и это должно проверить наличие целевых служб. Типичная последовательность для использования служб определения местоположения следующие:

  1. Вызовите authorizationStatus метод класса получить текущее состояние авторизации для Вашего приложения.

    Если состояние авторизации kCLAuthorizationStatusRestricted или kCLAuthorizationStatusDenied, Вашему приложению не разрешают использовать службы определения местоположения, и необходимо прервать попытку использовать их.

  2. Создайте Ваш CLLocationManager возразите и присвойте делегата в нем.

  3. Сохраните сильную ссылку своему менеджеру расположения где-нибудь в Вашем приложении.

  4. В iOS, если состояние авторизации было kCLAuthorizationStatusNotDetermined, вызовите requestWhenInUseAuthorization или requestAlwaysAuthorization метод для запроса надлежащего типа авторизации от пользователя.

  5. В зависимости от служб Вы нуждаетесь, вызываете один или больше следующих методов:

    • При использовании стандартной службы определения местоположения вызовите 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 свойство YEStrue, пробуждение устройства заставляет приложение располагаться для маркеров в течение нескольких секунд в фоновом режиме.) Эта служба не повторно запускает завершенные приложения для iOS; однако, Вы можете быть повторно запущены путем контроля областей маркера с помощью контрольной службы области.

  • В то время как приложение для iOS работает на переднем плане, служба заголовка обычно поставляет события. Когда Ваше приложение в фоновом режиме, эта служба поставляет события только, когда фоновый режим обновлений информации о местоположении включен для приложения, и стандартная служба определения местоположения работает. Эта служба не повторно запускает завершенные приложения для iOS.

  • В то время как приложение для iOS работает на переднем плане, служба посещения обычно поставляет события. Когда Ваше приложение в фоновом режиме, эта служба поставляет события только, когда фоновый режим обновлений информации о местоположении включен для приложения, и стандартная служба определения местоположения работает. Для завершенного приложения для iOS эта служба повторно запускает приложение для поставки событий. Использование этой службы «всегда» требует авторизации от пользователя.

Включение фонового режима обновлений информации о местоположении гарантирует, что приложение продолжает получать события расположения в то время как в фоновом режиме. Когда приложение перемещается в фон, система добавляет индикатор служб определения местоположения к строке состояния, чтобы позволить пользователю знать, что приложение использует службы определения местоположения. Система может все еще завершить приложение в любое время для предъявления претензий в отношении его памяти или других ресурсов.

Для служб, повторно запускающих приложение, система добавляет UIApplicationLaunchOptionsLocationKey ключ к словарю опций передал делегату приложения во время запуска. Когда этот ключ присутствует, необходимо перезапустить службы определения местоположения приложения сразу же. Словарь опций не включает информацию о самом событии расположения. Необходимо сконфигурировать нового менеджера расположения объект и делегировать и запустить службы определения местоположения снова для получения любых незаконченных событий. В iOS 7.1 и позже, службы, заставляющие приложение быть повторно запущенным, делают так даже после пользовательских выходов силы приложение. В предыдущих версиях iOS выход силы приложение препятствовало тому, чтобы было повторно запущено приложение.

Если Ваше приложение ничего не должно делать с событиями расположения сразу же, рассмотрите обновления информации о местоположении задержки с помощью allowDeferredLocationUpdatesUntilTraveled:timeout: метод. Все еще поставляя событиям расположения для Вашего приложения нужно, задержка поставки обновлений информации о местоположении упрощает для Базового Расположения сохранять время работы от батареи.

Наследование


Соответствует


Оператор импорта


Swift

import CoreLocation

Objective C

@import CoreLocation;

Доступность


Доступный в OS X v10.6 и позже.
  • Возвращает состояние авторизации приложения для использования служб определения местоположения.

    Объявление

    Swift

    class func authorizationStatus() -> CLAuthorizationStatus

    Objective C

    + (CLAuthorizationStatus)authorizationStatus

    Возвращаемое значение

    Значение, указывающее, разрешено ли приложение использовать службы определения местоположения.

    Обсуждение

    Состоянием авторизации данного приложения управляет система и определяют несколько факторов. Приложения должны быть явно разрешены использовать службы определения местоположения пользователем, и службы определения местоположения должны самостоятельно в настоящее время включаться для системы. Когда Ваше приложение сначала пытается использовать службы определения местоположения, запрос на авторизацию пользователя выведен на экран автоматически.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает булево значение, указывающее, включены ли службы определения местоположения на устройстве.

    Объявление

    Swift

    class func locationServicesEnabled() -> Bool

    Objective C

    + (BOOL)locationServicesEnabled

    Возвращаемое значение

    YEStrue если включены службы определения местоположения; NOfalse если они не.

    Обсуждение

    Пользователь может включить или отключить службы определения местоположения из приложения Настроек путем переключения переключателя Location Services в целом.

    Необходимо проверить возвращаемое значение этого метода прежде, чем запустить обновления информации о местоположении, чтобы определить, включили ли пользователю службы определения местоположения для текущего устройства. Службы определения местоположения предлагают пользователям в первый раз, когда они пытаются использовать связанную с расположением информацию в приложении, но не запрашивает последующие попытки. Если пользователь отклоняет использование служб определения местоположения, и Вы пытаетесь запустить обновления информации о местоположении так или иначе, менеджер расположения сообщает об ошибке ее делегату.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает булево значение, указывающее, поддерживает ли устройство задержанные обновления информации о местоположении.

    Объявление

    Swift

    class func deferredLocationUpdatesAvailable() -> Bool

    Objective C

    + (BOOL)deferredLocationUpdatesAvailable

    Возвращаемое значение

    YEStrue если устройство поддерживает задержанные обновления информации о местоположении или NOfalse если это не делает.

    Обсуждение

    Задержанные обновления информации о местоположении являются способом для менеджера расположения часто избегать будить фоновое приложение для поставки изменений расположения. Обычно, когда приложение хочет обновления информации о местоположении в фоновом режиме, приложение должно быть разбужено каждый раз, когда поступает новое событие. Пробуждение приложения использует питание, которое в некоторых ситуациях могло бы быть потрачено впустую, если приложение ничего не может сделать с информацией о расположении кроме журнала это и возвратиться для сна так или иначе. Когда Ваше приложение может сделать что-то полезное с данными и затем обработать обновления одновременно, задержка обновлений информации о местоположении предоставляет Вам возможность ожидать до времени.

    Задержанные обновления информации о местоположении требуют присутствия аппаратных средств GPS и не могут поддерживаться на всех устройствах на iOS.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.9 и позже.

  • Возвращает булево значение, указывающее, доступно ли значительное отслеживание изменений расположения.

    Объявление

    Swift

    class func significantLocationChangeMonitoringAvailable() -> Bool

    Objective C

    + (BOOL)significantLocationChangeMonitoringAvailable

    Возвращаемое значение

    YEStrue если контроль изменения расположения доступен; NOfalse если это не.

    Обсуждение

    Этот метод указывает, в состоянии ли устройство сообщить, что обновления на основе значительного расположения изменяются только. Эта возможность обеспечивает огромную экономию электроэнергии для приложений, которые хотят отследить приблизительное расположение пользователя и не нужны в очень точной информации о положении.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает булево значение, указывающее, в состоянии ли менеджер расположения генерировать связанные с заголовком события.

    Объявление

    Swift

    class func headingAvailable() -> Bool

    Objective C

    + (BOOL)headingAvailable

    Возвращаемое значение

    YEStrue если заголовок данных доступен; NOfalse если это не.

    Обсуждение

    Заголовок данных может не быть доступным на всех основанных на iOS устройствах. Необходимо проверить значение, возвращенное этим методом прежде, чем попросить, чтобы менеджер расположения поставил связанные с заголовком события.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает булевскую переменную, указывающую, поддерживает ли устройство контроль области с помощью указанного класса.

    Объявление

    Swift

    class func isMonitoringAvailableForClass(_ regionClass: AnyClass!) -> Bool

    Objective C

    + (BOOL)isMonitoringAvailableForClass:(Class)regionClass

    Параметры

    regionClass

    Контрольный класс области от платформы Набора Карты. Этот класс должен быть убыванием от CLRegion класс.

    Возвращаемое значение

    YEStrue если устройство способно к контролирующим областям с помощью указанного класса или NOfalse если это не.

    Обсуждение

    Доступность контрольной поддержки области зависит от аппаратного настоящего на устройстве. Этот метод не принимает во внимание доступность служб определения местоположения или факта, что пользователь, возможно, отключил их для приложения или системы; необходимо определить состояние авторизации приложения отдельно.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.10 и позже.

    См. также

    + authorizationStatus

  • делегат делегат Свойство

    Объект делегата получить события обновления.

    Объявление

    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

    Доступность

    Доступный в OS X v10.6 и позже.

  • Запускает генерацию обновлений, сообщающих о текущем расположении пользователя.

    Объявление

    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

    Доступность

    Доступный в OS X v10.6 и позже.

  • Останавливает генерацию обновлений информации о местоположении.

    Объявление

    Swift

    func stopUpdatingLocation()

    Objective C

    - (void)stopUpdatingLocation

    Обсуждение

    Вызовите этот метод каждый раз, когда Ваш код больше не должен получать связанные с расположением события. Отключение поставки события дает получателю опцию отключения надлежащих аппаратных средств (и таким образом экономия электроэнергии), когда никаким клиентам не нужны данные расположения. Можно всегда перезапускать генерацию обновлений информации о местоположении путем вызова startUpdatingLocation метод снова.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.6 и позже.

    См. также

    – startUpdatingLocation

  • distanceFilter 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

    Доступность

    Доступный в OS X v10.6 и позже.

  • desiredAccuracy 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

    Доступность

    Доступный в OS X v10.6 и позже.

  • Запускает генерацию обновлений на основе значительных изменений расположения.

    Объявление

    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

    Доступность

    Доступный в OS X v10.7 и позже.

  • Останавливает поставку событий расположения на основе значительных изменений расположения.

    Объявление

    Swift

    func stopMonitoringSignificantLocationChanges()

    Objective C

    - (void)stopMonitoringSignificantLocationChanges

    Обсуждение

    Используйте этот метод для остановки поставки событий расположения, запущенной с помощью startMonitoringSignificantLocationChanges метод.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Начинает контролировать указанную область.

    Объявление

    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

    Доступность

    Доступный в OS X v10.8 и позже.

  • Остановки, контролирующие указанную область.

    Объявление

    Swift

    func stopMonitoringForRegion(_ region: CLRegion!)

    Objective C

    - (void)stopMonitoringForRegion:(CLRegion *)region

    Параметры

    region

    Объект области, в настоящее время контролируемый. Этот параметр не должен быть nil.

    Обсуждение

    Если указанный объект области в настоящее время не контролируется, этот метод не имеет никакого эффекта.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.8 и позже.

  • Набор совместно используемых областей, контролируемых всем менеджером расположения объекты. (только для чтения)

    Объявление

    Swift

    @NSCopying var monitoredRegions: NSSet! { get }

    Objective C

    @property(readonly, nonatomic, copy) NSSet *monitoredRegions

    Обсуждение

    Вы не можете добавить области к этому свойству непосредственно. Вместо этого необходимо зарегистрировать области путем вызова startMonitoringForRegion: метод. Области в этом свойстве совместно используются всеми экземплярами CLLocationManager класс в Вашем приложении.

    Объекты в этом наборе могут не обязательно быть теми же объектами, которые Вы указали в регистрационное время. Только сами данные области сохраняются системой. Поэтому единственный способ однозначно определить зарегистрированную область использует identifier свойство.

    Менеджер расположения сохраняет данные области между запусками Вашего приложения. Если Ваше приложение завершается и затем повторно запускается, содержание этого свойства повторно заполняется с объектами области, содержащими ранее зарегистрированные данные.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.8 и позже.

  • Самое большое граничное расстояние, которое может быть присвоено области. (только для чтения)

    Объявление

    Swift

    var maximumRegionMonitoringDistance: CLLocationDistance { get }

    Objective C

    @property(readonly, nonatomic) CLLocationDistance maximumRegionMonitoringDistance

    Обсуждение

    Это свойство определяет самое большое граничное расстояние, позволенное от центральной точки области. Попытка контролировать область с расстоянием, больше, чем это значение, заставляет менеджера расположения отправлять a kCLErrorRegionMonitoringFailure ошибка делегату.

    Если контроль области недоступен или не поддерживаемый, значение в этом свойстве -1.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.8 и позже.

  • Получает состояние области асинхронно.

    Объявление

    Swift

    func requestStateForRegion(_ region: CLRegion!)

    Objective C

    - (void)requestStateForRegion:(CLRegion *)region

    Параметры

    region

    Область, состояние которой Вы хотите знать. Этот объект должен быть экземпляром одного из стандартных подклассов области, предоставленных Набором Карты. Вы не можете использовать этот метод для определения состояния пользовательских областей, которые Вы определяете сами.

    Обсуждение

    Этот метод выполняет запрос асинхронно и поставляет результаты делегату менеджера расположения. Необходимо реализовать locationManager:didDetermineState:forRegion: метод в делегате для получения результатов.

    Если region параметр содержит неизвестный тип объекта области, этот метод ничего не делает.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.10 и позже.

  • Последний раз полученное пользовательское расположение. (только для чтения)

    Объявление

    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

    Доступность

    Доступный в OS X v10.6 и позже.

    См. также

    – startUpdatingLocation

  • locationServicesEnabled locationServicesEnabled Доступный в OS X v10.6 через OS X v10.6 Свойство

    Булево значение, указывающее, включены ли службы определения местоположения на устройстве. (только для чтения)

    Оператор осуждения

    Используйте locationServicesEnabled метод класса вместо этого.

    Объявление

    Objective C

    @property(readonly) BOOL locationServicesEnabled

    Обсуждение

    В iOS пользователь может включить или отключить службы определения местоположения с помощью средств управления в Настройках> Службы определения местоположения. В OS X пользователь может включить или отключить службы определения местоположения от системного предпочтения Безопасности и Конфиденциальности.

    Необходимо проверить это свойство прежде, чем запустить обновления информации о местоположении, чтобы определить, включили ли пользователю службы определения местоположения для текущего устройства. Если это свойство содержит значение NOfalse и Вы запускаете обновления информации о местоположении так или иначе, Базовая платформа Расположения предлагает пользователю с предупреждением подтверждения выяснение, должны ли быть повторно включены службы определения местоположения.

    Специальные замечания

    В iOS это свойство объявляется как nonatomic. В OS X это объявляется как atomic.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Доступность

    Доступный в OS X v10.6 через OS X v10.6.

    См. также

    – startUpdatingLocation

  • Возвращает булево значение, указывающее, поддерживается ли контроль области на текущем устройстве.

    Оператор осуждения

    Использовать isMonitoringAvailableForClass: вместо этого.

    Объявление

    Swift

    class func regionMonitoringAvailable() -> Bool

    Objective C

    + (BOOL)regionMonitoringAvailable

    Возвращаемое значение

    YEStrue если контроль области доступен; NOfalse если это не.

    Обсуждение

    Поддержка контроля области может не быть доступной на всех устройствах и моделях. Необходимо проверить значение этого свойства прежде, чем попытаться установить любые области или инициировать контроль области.

    Даже если контрольная поддержка области присутствует на устройстве, это может все еще быть недоступно, потому что пользователь отключил его для текущего приложения или для всех приложений.

    Специальные замечания

    Этот класс осуждается в iOS 7 и позже но все еще поддерживается в OS X.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.8 и позже.

    Осуждаемый в OS X v10.10.

    См. также

    + regionMonitoringEnabled

  • Возвращает булево значение, указывающее, включается ли в настоящее время контроль области.

    Оператор осуждения

    Использовать isMonitoringAvailableForClass: и authorizationStatus вместо этого.

    Объявление

    Swift

    class func regionMonitoringEnabled() -> Bool

    Objective C

    + (BOOL)regionMonitoringEnabled

    Возвращаемое значение

    YEStrue если контроль области доступен и в настоящее время включается; NOfalse если это недоступно или не включенное.

    Обсуждение

    В iOS пользователь может включить или отключить службы определения местоположения (включая контроль области) использование средств управления в Настройках> Службы определения местоположения.

    Необходимо проверить возвращаемое значение этого метода перед стартовыми контрольными обновлениями области, чтобы определить, позволяет ли пользователь в настоящее время службам определения местоположения использоваться вообще. Если возвращается этот метод NOfalse и Вы запускаете контрольные обновления области так или иначе, Базовая платформа Расположения предлагает пользователю подтверждать выяснение, должны ли быть повторно включены службы определения местоположения.

    Этот метод не проверяет, чтобы видеть, поддерживаются ли контрольные возможности области фактически устройством. Поэтому необходимо также проверить возвращаемое значение regionMonitoringAvailable метод класса прежде, чем попытаться запустить контрольные службы области.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.8 и позже.

    Осуждаемый в OS X v10.10.

    См. также

    + regionMonitoringAvailable

  • startMonitoringForRegion:desiredAccuracy: - startMonitoringForRegion:desiredAccuracy: Доступный в OS X v10.7 через OS X v10.7

    Начинает контролировать указанную область для граничных пересечений.

    Оператор осуждения

    Использовать 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;

    Доступность

    Доступный в OS X v10.7 через OS X v10.7.

  • цель цель Свойство

    Предоставленная приложением строка, описывающая причину использования служб определения местоположения.

    Установите строку цели с помощью NSLocationAlwaysUsageDescription или NSLocationWhenInUseUsageDescription введите приложение Info.plist вместо этого.

    Объявление

    Swift

    var purpose: String!

    Objective C

    @property(copy, nonatomic) NSString *purpose

    Обсуждение

    Если это свойство не nil и система должна попросить согласие пользователя использовать службы определения местоположения, это выводит на экран предоставленную строку. Можно использовать эту строку для объяснения, почему приложение использует службы определения местоположения.

    Необходимо установить значение этого свойства до запуска любых служб определения местоположения. Поскольку строка в конечном счете выведена на экран пользователю, необходимо всегда загружать ее из файла локализованных строк.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Эти константы указывают, разрешено ли приложение использовать службы определения местоположения.

    Объявление

    Swift

    enum CLAuthorizationStatus : Int32 { case NotDetermined case Restricted case Denied case Authorized }

    Objective C

    typedef enum { kCLAuthorizationStatusNotDetermined = 0, kCLAuthorizationStatusRestricted, kCLAuthorizationStatusDenied, kCLAuthorizationStatusAuthorized, } CLAuthorizationStatus;

    Константы

    • NotDetermined

      kCLAuthorizationStatusNotDetermined

      Пользователь еще не сделал выбор относительно того, может ли это приложение использовать службы определения местоположения.

      Доступный в OS X v10.7 и позже.

    • Restricted

      kCLAuthorizationStatusRestricted

      Это приложение не разрешено использовать службы определения местоположения. Пользователь не может изменить состояние этого приложения, возможно вследствие активных ограничений, таких как существующий родительский контроль.

      Доступный в OS X v10.7 и позже.

    • Denied

      kCLAuthorizationStatusDenied

      Пользователь явно отклонил использование служб определения местоположения для этого приложения, или службы определения местоположения в настоящее время отключаются в Настройках.

      Доступный в OS X v10.7 и позже.

    • Authorized

      kCLAuthorizationStatusAuthorized

      Это приложение разрешено использовать службы определения местоположения.

      Доступный в OS X v10.7 и позже.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.7 и позже.

  • Константы для указания максимальных значений во время задержанных обновлений.

    Объявление

    Objective C

    extern const CLLocationDistance CLLocationDistanceMax; extern const NSTimeInterval CLTimeIntervalMax;

    Константы

    • CLLocationDistanceMax

      CLLocationDistanceMax

      Значение, представляющее неограниченное расстояние.

      Доступный в OS X v10.9 через OS X v10.9.

    • CLTimeIntervalMax

      CLTimeIntervalMax

      Значение, представляющее неограниченное количество времени.

      Доступный в OS X v10.9 через OS X v10.9.

  • Эти константы указывают тип действия, связанного с обновлениями информации о местоположении.

    Объявление

    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

      Менеджер расположения используется для неизвестного действия.

      Доступный в OS X v10.9 и позже.

    • AutomotiveNavigation

      CLActivityTypeAutomotiveNavigation

      Менеджер расположения используется в частности во время автомобильной навигации для отслеживания изменений расположения в автомобиле. Это действие могло бы заставить обновления информации о местоположении быть приостановленными только, когда механизм не перемещается в течение длительного периода времени.

      Доступный в OS X v10.9 и позже.

    • Fitness

      CLActivityTypeFitness

      Менеджер расположения используется для отслеживания любого связанного с пешеходом действия. Это действие могло бы заставить обновления информации о местоположении быть приостановленными только, когда пользователь не перемещает значительное расстояние в течение времени.

      Доступный в OS X v10.9 и позже.

    • OtherNavigation

      CLActivityTypeOtherNavigation

      Менеджер расположения используется для отслеживания перемещений за другие типы автомобильной навигации, которые не являются связанным автомобилем. Например, Вы использовали бы это для отслеживания навигации судном, поездом или плоскостью. Не используйте этот тип для пешеходного отслеживания навигации. Это действие могло бы заставить обновления информации о местоположении быть приостановленными только, когда механизм не перемещает значительное расстояние в течение времени.

      Доступный в OS X v10.9 и позже.

    Оператор импорта

    Objective C

    @import CoreLocation;

    Swift

    import CoreLocation

    Доступность

    Доступный в OS X v10.9 и позже.