2017-02-16 16 views
0

Похоже, что я не получаю уведомление по методу delegate, пока приложение находится в фоновом режиме. Я получаю didChangeAuthorizationStatus, как только приложение переходит на передний план. Кто-нибудь еще успел получить authorizationStatus в фоновом режиме?locationmanager didchangeauthorizationstatus не вызван в фоновом режиме

BTW, другие delegate методы работают в фоновом режиме, поэтому я знаю, что я установил правильные свойства в info.plist.

+0

Какая у вас проблема? Ваше приложение не делает _run_ в фоновом режиме, так почему имеет значение, что вы не получаете уведомление, пока не находитесь на переднем плане? Это первый момент, когда ваше приложение может вообще что-то делать. – matt

+0

Мэтт, я собираю обновления местоположения в фоновом режиме и регистрирую их. Если пользователь отключил местоположение, я бы хотел его зарегистрировать. – user7143420

ответ

1

Даже если это в классе делегат didChangeAuthorization только вызывается, когда оба из следующих условий:

  • пользователь изменяет статус авторизации службы приложение местоположение
  • приложение вызывает requestWhenInUseAuthorization() или requestAlwaysAuthorization()

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

+0

Есть ли доказательства такого поведения в документации? У меня одно и то же наблюдение, но не уверен, что это единственный способ заставить didChangeAuthorization работать –