Использование модуля геолокации Pushwoosh в Android-приложениях
В Android существует две категории доступа к местоположению:
- Доступ к местоположению в активном режиме
- Доступ к местоположению в фоновом режиме
Для обновления местоположения пользователя в активном режиме должно быть выполнено одно из следующих условий:
- Одна из активностей (activity) приложения активна
- Для приложения запущен сервис переднего плана (foreground service) с
foregroundServiceType = “location”
Фоновый доступ позволяет приложению получать геолокацию пользователя, когда приложение неактивно и для него не запущены сервисы переднего плана (foreground services) типа “location”.
Доступ к местоположению в активном режиме
Anchor link toЕсли вы собираетесь использовать модуль геолокации Pushwoosh для обновления местоположения пользователя только тогда, когда ваше приложение активно, добавьте модуль pushwoosh-location
в ваш файл app/build.gradle:
implementation 'com.pushwoosh:pushwoosh-location:6.+'
Чтобы запустить модуль, используйте метод startLocationTracking
:
PushwooshLocation.startLocationTracking();
PushwooshLocation.startLocationTracking()
Использование ForegroundService для запроса местоположения, когда приложение находится в фоновом режиме
Anchor link toЧтобы запустить 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>...
Доступ к местоположению в фоновом режиме
Anchor link toДля обновления геолокации в фоновом режиме без запуска ForegroundService вам понадобится следующее:
- Получить одобрение от Google Play на доступ вашего приложения к местоположению в фоновом режиме (подробнее см. https://support.google.com/googleplay/android-developer/answer/9799150?hl=ru)
- Добавить разрешение в ваш 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 мы включили дополнительный метод, который открывает экран настроек разрешений на доступ к местоположению, если выполнены следующие условия:
- Для приложения предоставлено разрешение на доступ к местоположению в активном режиме;
- Разрешение пользователя
ACCESS_BACKGROUND_LOCATION
присутствует в AndroidManifest.xml приложения.
Вызовите метод следующим образом:
PushwooshLocation.requestBackgroundLocationPermission();
PushwooshLocation.requestBackgroundLocationPermission()
Типы разрешений в Android 12+
Anchor link toНачиная с Android 12, когда запрашивается разрешение на доступ к местоположению в активном режиме, пользователь может выбрать, как часто и с какой точностью приложение будет получать его местоположение.
Существует два типа таких разрешений:
- Приблизительное местоположение (Approximate location), что соответствует ACCESS_COARSE_LOCATION
- Точное местоположение (Precise location), что соответствует ACCESS_FINE_LOCATION и ACCESS_COARSE_LOCATION
Поделитесь с нами своим мнением
Anchor link toВаши отзывы помогают нам делать наш продукт лучше, поэтому мы будем рады, если вы расскажете о любых проблемах, возникших в процессе интеграции SDK. Если вы столкнетесь с какими-либо трудностями, пожалуйста, не стесняйтесь поделиться с нами своими мыслями через эту форму.