В iOS 11 didEnterRegion и didExitRegion не работают при авторизации Когда предоставляется InUse, в противном случае он работает нормально

Качаю проект отсюда

https://www.raywenderlich.com/136165/core-location-geofencing-tutorial

и внес небольшие изменения в соответствии с требованиями

  1. xcode сказал, что описание отсутствует, поэтому я добавляю их в info.plist

    Конфиденциальность - Местоположение всегда и когда используется Описание использования

    Конфиденциальность - Местоположение при использовании Описание использования

  2. В GeotificationsViewController я изменил это

    func locationManager (_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {mapView.showsUserLocation = status == .authorizedAlways || status == .authorizedWhenInUse}

Когда я даю authorizedAlways, все работает нормально, но когда предоставляется authorizedWhenInUse, не доставляются didEnterRegion и didExitRegion

Приложение открыто, работает, активно, отображается на экране в обоих сценариях.

xcode версии 9.2, iOS 11.2


person Pursuing perfection    schedule 04.01.2018    source источник


Ответы (1)


Для операции мониторинга на основе региона вы должны получить authorizedAlways разрешение от пользователя.

Для получения дополнительной информации проверьте это.

https://developer.apple.com/documentation/corelocation/cllocationmanager/1620562-requestwheninuseauthorization

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

person Jaydeep Vora    schedule 04.01.2018
comment
Но что, если пользователь хочет использовать эту функцию только во время работы приложения, пользователь не хочет предоставлять authorizedAlways - person Pursuing perfection; 04.01.2018
comment
Тогда мониторинг региона работать не будет; это их выбор; Если они предоставляют только при использовании, они не получат функции мониторинга региона. Вы можете обнаружить этот параметр разрешения и отобразить предупреждение, объясняющее, что пользователю необходимо всегда предоставлять разрешение в настройках, если им нужна полная функциональность вашего приложения. - person Paulw11; 04.01.2018
comment
Но не думаете ли вы, что при использовании это сбивает пользователя с толку, он / она подумает, что он / она будет обеспечивать полную функциональность во время работы приложения. - person Pursuing perfection; 04.01.2018