Использование модуля определения местоположения Pushwoosh в приложениях Android
В Android существуют две категории доступа к местоположению:
- Доступ к местоположению в активном режиме (Foreground)
- Доступ к местоположению в фоновом режиме (Background)
Для обновления местоположения пользователя в активном режиме (foreground) должно быть выполнено одно из следующих условий:
- Одна из активностей приложения активна
- Запущен Foreground service с
foregroundServiceType = “location”для приложения
Доступ в фоновом режиме (background) позволяет приложению получать геолокацию пользователя, когда приложение неактивно и для него не запущены Foreground services типа “location”.
Доступ к местоположению в активном режиме (Foreground)
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="Мой текст уведомления" /> <meta-data android:name="com.pushwoosh.foreground_service_notification_channel_name" android:value="Мое название канала уведомлений" />...</application>...Доступ к местоположению в фоновом режиме (Background)
Anchor link toДля обновления геолокации в фоновом режиме без запуска 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 мы включили дополнительный метод, который открывает экран настроек разрешений местоположения, если выполняются следующие условия:
- Для приложения предоставлено разрешение на местоположение в активном режиме;
- Разрешение пользователя
ACCESS_BACKGROUND_LOCATIONприсутствует в AndroidManifest.xml приложения.
Вызовите метод следующим образом:
PushwooshLocation.requestBackgroundLocationPermission();PushwooshLocation.requestBackgroundLocationPermission()Типы разрешений Android 12+
Anchor link toНачиная с Android 12, при запросе разрешения на доступ к местоположению в активном режиме пользователь может выбрать, как часто и с какой точностью приложение будет получать его местоположение.
Существует два типа таких разрешений:
- Приблизительное местоположение, которое эквивалентно
ACCESS_COARSE_LOCATION - Точное местоположение, которое эквивалентно
ACCESS_FINE_LOCATIONиACCESS_COARSE_LOCATION
Поделитесь своим мнением
Anchor link toВаше мнение помогает нам создавать лучший опыт, поэтому мы будем рады услышать от вас, если у вас возникнут какие-либо проблемы в процессе интеграции SDK. Если вы столкнетесь с трудностями, пожалуйста, не стесняйтесь поделиться своими мыслями с нами через эту форму.