Синий баннер "% MyApp% использует ваше местоположение" для приложения, которое использует службы определения местоположения только тогда, когда активен

В моем приложении я обновляю местоположение пользователя каждый раз, когда приложение становится активным. Я останавливаю CLLocationManager после получения обновленного местоположения или в applicationWillResignActive:. В Info.plist существует NSLocationWhenInUseUsageDescription с соответствующим описанием.

Если приложение активировано, а затем сразу же перемещено на задний план, синий баннер говорит, что "% MyApp% - это использование вашего местоположения" отображается менее секунды. Этот баннер скрывается, как только вызывается applicationWillResignActive:.

Я заметил ту же проблему в Картах Google, но не в Apple Maps.

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

Ответ 1

Возможно, вы выбрали местоположение в качестве фонового режима в своем info.plist. Если вы удалите это, синяя полоса больше не появится.

Или вы можете использовать requestAlwaysAuthorization вместо requestWhenInUseAuthorization на CLLocationManager (и предоставить связанный NSLocationAlwaysUsageDescription в файле info.plist), а затем он также не появится.

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

РЕДАКТИРОВАТЬ. Обратите внимание, что, начиная с iOS-9, вы можете убедиться, что синяя полоса появляется только тогда, когда пользователь действительно хочет, чтобы приложение использовало местоположение в фоновом режиме. См. этот ответ.

Ответ 2

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

Apple Maps - это особый случай, потому что это приложение первой стороны.