CLLocationManagerDelegate
CLLocationManagerDelegate протокол определяет методы, используемые для получения расположения и возглавляющих обновлений от a CLLocationManager объект.
После получения успешного расположения или заголовка обновления, можно использовать результат обновить пользовательский интерфейс или выполнить другие действия. Если расположение или заголовок не могли бы быть определены, Вы могли бы хотеть остановить обновления в течение короткого периода времени и попробовать еще раз позже. Можно использовать stopUpdatingLocation, stopMonitoringSignificantLocationChanges, stopUpdatingHeading, stopMonitoringForRegion:, или stopMonitoringVisits методы CLLocationManager остановить различные службы определения местоположения.
Методы Вашего объекта делегата вызывают от потока, в котором Вы запустили соответствующие службы определения местоположения. Тот поток должен самостоятельно иметь активный цикл выполнения, как тот, найденный в основном потоке Вашего приложения.
Наследование
Не применимый
Оператор импорта
Swift
import CoreLocation
Objective C
@import CoreLocation;
Доступность
Доступный в OS X v10.6 и позже.
-
Говорит делегату, что новые данные расположения доступны.
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didUpdateLocationslocations: [AnyObject]!)Objective C
- (void)locationManager:(CLLocationManager *)managerdidUpdateLocations:(NSArray *)locationsПараметры
managerМенеджер расположения возражает, что генерировал событие обновления.
locationsМассив
CLLocationобъекты, содержащие данные расположения. Этот массив всегда содержит по крайней мере один объект, представляющий текущее расположение. Если обновления были задержаны или если многократные расположения поступили, прежде чем они могли быть поставлены, массив может содержать дополнительные записи. Объекты в массиве организованы в порядке, в котором они произошли. Поэтому новое обновление информации о местоположении в конце массива.Обсуждение
Реализация этого метода является дополнительной, но рекомендована.
Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.9 и позже.
-
Говорит делегату, что менеджер расположения был неспособен получить значение расположения.
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didFailWithErrorerror: NSError!)Objective C
- (void)locationManager:(CLLocationManager *)managerdidFailWithError:(NSError *)errorПараметры
managerОбъект менеджера расположения, который был неспособен получить расположение.
errorОшибочный объект, содержащий причину расположение или заголовок, не мог быть получен.
Обсуждение
Реализация этого метода является дополнительной, но рекомендована.
Вызовы диспетчера расположения этот метод, когда это встречается с ошибкой при попытке получить расположение или заголовке данных. Если служба определения местоположения неспособна получить расположение сразу же, это отчеты a
kCLErrorLocationUnknownошибка и продолжает пробовать. В такой ситуации можно просто проигнорировать ошибку и ожидать нового события. Если заголовок не мог бы быть определен из-за сильной интерференции от соседних магнитных полей, этот метод возвратыkCLErrorHeadingFailure.Если пользователь отклоняет использование Вашего приложения службы определения местоположения, этот метод отчеты a
kCLErrorDeniedошибка. После получения такой ошибки необходимо остановить службу определения местоположения.Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.6 и позже.
-
locationManager (_: didFinishDeferredUpdatesWithError:) - locationManager:didFinishDeferredUpdatesWithError:Говорит делегату, что больше не будут задерживаться обновления.
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didFinishDeferredUpdatesWithErrorerror: NSError!)Objective C
- (void)locationManager:(CLLocationManager *)managerdidFinishDeferredUpdatesWithError:(NSError *)errorПараметры
managerМенеджер расположения возражает, что генерировал событие обновления.
errorОшибочный объект, содержащий задержанные обновления информации о местоположении причины, не мог быть поставлен.
Обсуждение
Вызовы объектов менеджера расположения этот метод, чтобы сообщить, что это прекратило задерживать поставку событий расположения. Менеджер может вызвать этот метод для любого числа причин. Например, это вызывает его при остановке обновлений информации о местоположении в целом когда Вы просите, чтобы менеджер расположения запретил задержанные обновления, или когда удовлетворяют условию для задержки обновлений (таких как превышение тайм-аута или параметра расстояния).
Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.9 и позже.
-
locationManager (_: didUpdateToLocation:fromLocation:) - locationManager:didUpdateToLocation:fromLocation:Говорит делегату, что новое значение расположения доступно.
Использовать
locationManager:didUpdateLocations:вместо этого.Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didUpdateToLocationnewLocation: CLLocation!, fromLocationoldLocation: CLLocation!)Objective C
- (void)locationManager:(CLLocationManager *)managerdidUpdateToLocation:(CLLocation *)newLocationfromLocation:(CLLocation *)oldLocationПараметры
managerМенеджер расположения возражает, что генерировал событие обновления.
newLocationНовые данные расположения.
oldLocationДанные расположения от предыдущего обновления. Если это - первое событие обновления, поставленное этим менеджером расположения, этот параметр
nil.Обсуждение
К тому времени, когда это сообщение передается Вашему делегату, новые данные расположения также доступны непосредственно от
CLLocationManagerобъект.newLocationпараметр может содержать данные, кэшировавшиеся от предыдущего использования службы определения местоположения. Можно использоватьtimestampсвойство расположения возражает, чтобы определить, насколько недавний данные расположения.Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.6 и позже.
-
Говорит делегату, что пользователь ввел указанную область.
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didEnterRegionregion: CLRegion!)Objective C
- (void)locationManager:(CLLocationManager *)managerdidEnterRegion:(CLRegion *)regionПараметры
managerМенеджер расположения объектное создание отчетов о событии.
regionОбъект, содержащий информацию о вводившейся области.
Обсуждение
Поскольку области являются ресурсом общего приложения, каждый активный менеджер расположения, объект передает это сообщение своему связанному делегату. Это не имеет значения, какой менеджер расположения фактически зарегистрировал указанную область. И если многократные менеджеры расположения совместно используют объект делегата, тот делегат получает сообщение многократно.
Предоставленный объект области может не быть тем же самым, который был зарегистрирован. В результате Вы никогда не должны выполнять сравнения уровня указателя для определения равенства. Вместо этого используйте строку идентификатора области, чтобы определить, должен ли ответить Ваш делегат.
Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.8 и позже.
-
Говорит делегату, что пользователь оставил указанную область.
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didExitRegionregion: CLRegion!)Objective C
- (void)locationManager:(CLLocationManager *)managerdidExitRegion:(CLRegion *)regionПараметры
managerМенеджер расположения объектное создание отчетов о событии.
regionОбъект, содержащий информацию об области, из которой вышли.
Обсуждение
Поскольку области являются ресурсом общего приложения, каждый активный менеджер расположения, объект передает это сообщение своему связанному делегату. Это не имеет значения, какой менеджер расположения фактически зарегистрировал указанную область. И если многократные менеджеры расположения совместно используют объект делегата, тот делегат получает сообщение многократно.
Предоставленный объект области может не быть тем же самым, который был зарегистрирован. В результате Вы никогда не должны выполнять сравнения уровня указателя для определения равенства. Вместо этого используйте строку идентификатора области, чтобы определить, должен ли ответить Ваш делегат.
Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.8 и позже.
-
locationManager (_: didDetermineState:forRegion:) - locationManager:didDetermineState:forRegion:ТребуемыйГоворит делегату о состоянии указанной области. (требуемый)
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didDetermineStatestate: CLRegionState, forRegionregion: CLRegion!)Objective C
- (void)locationManager:(CLLocationManager *)managerdidDetermineState:(CLRegionState)stateforRegion:(CLRegion *)regionПараметры
managerМенеджер расположения объектное создание отчетов о событии.
stateСостояние указанной области. Для списка возможных значений посмотрите
CLRegionStateввести.regionОбласть, состояние которой было определено.
Обсуждение
Вызовы диспетчера расположения этот метод каждый раз, когда существует граничный переход для области. Это вызывает этот метод в дополнение к вызову
locationManager:didEnterRegion:иlocationManager:didExitRegion:методы. Менеджер расположения также вызывает этот метод в ответ на вызов кrequestStateForRegion:метод, работающий асинхронно.Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.10 и позже.
-
locationManager (_: monitoringDidFailForRegion:withError:) - locationManager:monitoringDidFailForRegion:withError:Говорит делегату, что произошла контрольная ошибка области.
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, monitoringDidFailForRegionregion: CLRegion!, withErrorerror: NSError!)Objective C
- (void)locationManager:(CLLocationManager *)managermonitoringDidFailForRegion:(CLRegion *)regionwithError:(NSError *)errorПараметры
managerМенеджер расположения объектное создание отчетов о событии.
regionОбласть, для которой произошла ошибка.
errorОшибочный объект, содержащий код ошибки, указывающий, почему контроль области перестал работать.
Обсуждение
Если ошибка происходит при попытке контролировать данную область, менеджер расположения отправляет это сообщение его делегату. Контроль области мог бы перестать работать, потому что сама область не может контролироваться или потому что был более общий отказ в конфигурировании контрольной службы области.
Несмотря на то, что реализация этого метода является дополнительной, рекомендуется реализовать его при использовании области, контролирующей в приложении.
Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.8 и позже.
-
Говорит делегату, что контролируется новая область.
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didStartMonitoringForRegionregion: CLRegion!)Objective C
- (void)locationManager:(CLLocationManager *)managerdidStartMonitoringForRegion:(CLRegion *)regionПараметры
managerМенеджер расположения объектное создание отчетов о событии.
regionКонтролирующаяся область.
Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.8 и позже.
-
Говорит делегату что состояние авторизации для измененного приложения.
Объявление
Swift
optional func locationManager(_manager: CLLocationManager!, didChangeAuthorizationStatusstatus: CLAuthorizationStatus)Objective C
- (void)locationManager:(CLLocationManager *)managerdidChangeAuthorizationStatus:(CLAuthorizationStatus)statusПараметры
managerМенеджер расположения объектное создание отчетов о событии.
statusНовое состояние авторизации для приложения.
Обсуждение
Этот метод вызывают каждый раз, когда возможность приложения использовать изменения служб определения местоположения. Изменения могут произойти, потому что пользователь позволил или отклонил использование служб определения местоположения для Вашего приложения или для системы в целом.
Когда Вы вызываете, если уже известно состояние авторизации
requestWhenInUseAuthorizationилиrequestAlwaysAuthorizationметод, менеджер расположения не сообщает о текущем состоянии авторизации этому методу. Менеджер расположения только сообщает об изменениях в состоянии авторизации. Например, когда состояние изменяется от, это вызывает этот методkCLAuthorizationStatusNotDeterminedкkCLAuthorizationStatusAuthorizedWhenInUse.Оператор импорта
Objective C
@import CoreLocation;Swift
import CoreLocationДоступность
Доступный в OS X v10.7 и позже.
