Я пишу приложение для навигации, которое отслеживает местоположение пользователя.
Чтобы продолжать показывать уведомление о маршруте (когда телефон заблокирован, отвечает на звонок и т. Д.), Мне также нужно продолжить отслеживание местоположения, пока приложение находится в фоновом режиме: (Capabilities>Background Modes>Location updates, locationManager.allowsBackgroundLocationUpdates = true)
Я очень долго боролся с этим вопросом и много читал об этом, но не мог найти ответ, который ищу. Я реализовал оба варианта:
Вариант 1 - запрос во время использования
(locationManager.requestWhenInUseAuthorization()
):
Когда приложение работает в фоновом режиме, над каждым приложением появляется дополнительная синяя полоса предупреждения о местоположении.
- Есть ли способ удалить этот баннер? или получить его только на очень короткий период времени? Опять же - я не могу использовать
locationManager.stopUpdatingLocation()
- так как они мне нужны в фоновом режиме.
Вариант 2 - Всегда запрашивать (locationManager.requestAlwaysAuthorization()
):
Через некоторое время мои пользователи получают пугающее сообщение фонового местоположения. Пример:
«APP» использует ваше местоположение в фоновом режиме. Вы хотите и дальше разрешать это?
- есть ли способ удалить это сообщение? (посмотрел на Waze в качестве примера - разрешения такие же, но я почти уверен, что никогда не получал такого сообщения)
- Могу ли я перестать получать обновления местоположения в фоновом режиме только после завершения работы приложения? и избежать пробуждения приложения (на самом деле мне не нужны эти местоположения)? я пытался использовать
locationManager.stopUpdatingLocation()
при завершении приложения - наapplicationWillTerminate(_ application: UIApplication)
Похоже, что оба варианта - не только плохой UX, который может отпугнуть пользователей, но и очень редко встречаются в других приложениях, основанных на местоположении.
Я не могу понять, что мне здесь не хватает.