Использование модуля геолокации Wavesend в Android-приложениях
В Android существует две категории доступа к местоположению:
- Доступ к местоположению в активном режиме
- Доступ к местоположению в фоновом режиме
Для обновления местоположения пользователя в активном режиме должно быть выполнено одно из следующих условий:
- Активен один из экранов (activity) приложения
- Для приложения запущен сервис переднего плана (foreground service) с типом
foregroundServiceType = “location”
Доступ в фоновом режиме позволяет приложению получать геолокацию пользователя, когда приложение неактивно и для него не запущены сервисы переднего плана типа “location”.
Доступ к местоположению в активном режиме
Section titled “Доступ к местоположению в активном режиме”Если вы собираетесь использовать модуль геолокации Wavesend для обновления местоположения пользователя только тогда, когда ваше приложение активно, добавьте модуль pushwoosh-location в ваш app/build.gradle:
implementation 'com.pushwoosh:pushwoosh-location:6.+'Чтобы запустить модуль, используйте метод startLocationTracking:
PushwooshLocation.startLocationTracking();PushwooshLocation.startLocationTracking()Использование ForegroundService для запросов местоположения, когда ваше приложение находится в фоновом режиме
Section titled “Использование ForegroundService для запросов местоположения, когда ваше приложение находится в фоновом режиме”Чтобы запустить ForegroundService при вызове метода startLocationTracking, что позволяет получать геолокацию пользователя, когда ваше приложение находится в фоновом режиме, выполните шаги, описанные в предыдущем разделе, а затем добавьте следующие метаданные в ваш AndroidManifest.xml:
...<application>.... <meta-data android:name="com.pushwoosh.start_foreground_service" android:value="true" />...</application>...При запуске ForegroundService создается уведомление. Вы можете настроить это уведомление, указав дополнительные метаданные в AndroidManifest.xml вашего проекта:
...<application>.... <meta-data android:name="com.pushwoosh.foreground_service_notification_text" android:value="My notification text" /> <meta-data android:name="com.pushwoosh.foreground_service_notification_channel_name" android:value="My notification channel name" />...</application>...Доступ к местоположению в фоновом режиме
Section titled “Доступ к местоположению в фоновом режиме”Для обновления геолокации в фоновом режиме без запуска ForegroundService вам понадобится следующее:
- Получить одобрение от Google Play на доступ вашего приложения к местоположению в фоновом режиме (подробнее см. на https://support.google.com/googleplay/android-developer/answer/9799150?hl=en)
- Добавить разрешение в ваш AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />- Запросить у пользователя разрешение на обновление местоположения в фоновом режиме после получения разрешения на доступ к местоположению в активном режиме (инструкции см. в документации для разработчиков Android: https://developer.android.com/training/location/permissions#background-dialog-target-android-11 )
В версии модуля pushwoosh-location 6.3.2 мы добавили дополнительный метод, который открывает экран настроек разрешений на доступ к местоположению, если выполнены следующие условия:
- Приложению предоставлено разрешение на доступ к местоположению в активном режиме;
- В AndroidManifest.xml приложения присутствует разрешение
ACCESS_BACKGROUND_LOCATION.
Вызовите метод следующим образом:
PushwooshLocation.requestBackgroundLocationPermission();PushwooshLocation.requestBackgroundLocationPermission()Типы разрешений в Android 12+
Section titled “Типы разрешений в Android 12+”Начиная с Android 12, при запросе разрешения на доступ к местоположению в активном режиме пользователь может выбрать, как часто и с какой точностью приложение будет получать его местоположение.
Существует два типа таких разрешений:
- Примерное местоположение (approximate location), что соответствует ACCESS_COARSE_LOCATION
- Точное местоположение (precise location), что соответствует ACCESS_FINE_LOCATION и ACCESS_COARSE_LOCATION
Поделитесь с нами своим мнением
Section titled “Поделитесь с нами своим мнением”Ваши отзывы помогают нам делать наш продукт лучше, поэтому мы будем рады, если вы поделитесь своим мнением о процессе интеграции SDK. Если вы столкнетесь с какими-либо трудностями, пожалуйста, сообщите нам об этом через эту форму.