Перейти к содержанию

Использование модуля геолокации Pushwoosh в Android-приложениях

В Android существует две категории доступа к местоположению:

  • Доступ к местоположению в активном режиме
  • Доступ к местоположению в фоновом режиме

Для обновления местоположения пользователя в активном режиме должно быть выполнено одно из следующих условий:

  • Одна из активностей (activity) приложения активна
  • Для приложения запущен сервис переднего плана (foreground service) с foregroundServiceType = “location”

Фоновый доступ позволяет приложению получать геолокацию пользователя, когда приложение неактивно и для него не запущены сервисы переднего плана (foreground services) типа “location”.

Доступ к местоположению в активном режиме

Anchor link to

Если вы собираетесь использовать модуль геолокации Pushwoosh для обновления местоположения пользователя только тогда, когда ваше приложение активно, добавьте модуль pushwoosh-location в ваш файл app/build.gradle:

build.gradle
implementation 'com.pushwoosh:pushwoosh-location:6.+'

Чтобы запустить модуль, используйте метод 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 вам понадобится следующее:

<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();

Типы разрешений в Android 12+

Anchor link to

Начиная с Android 12, когда запрашивается разрешение на доступ к местоположению в активном режиме, пользователь может выбрать, как часто и с какой точностью приложение будет получать его местоположение.

Существует два типа таких разрешений:

  1. Приблизительное местоположение (Approximate location), что соответствует ACCESS_COARSE_LOCATION
  2. Точное местоположение (Precise location), что соответствует ACCESS_FINE_LOCATION и ACCESS_COARSE_LOCATION

Поделитесь с нами своим мнением

Anchor link to

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