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

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

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

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

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

  • Одна из активностей приложения активна
  • Запущен Foreground service с foregroundServiceType = “location” для приложения

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

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

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="Мой текст уведомления" />
<meta-data
android:name="com.pushwoosh.foreground_service_notification_channel_name"
android:value="Мое название канала уведомлений" />
...
</application>
...

Доступ к местоположению в фоновом режиме (Background)

Anchor link to

Для обновления геолокации в фоновом режиме без запуска ForegroundService вам потребуется следующее:

<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

В версии модуля pushwoosh-location 6.3.2 мы включили дополнительный метод, который открывает экран настроек разрешений местоположения, если выполняются следующие условия:

  • Для приложения предоставлено разрешение на местоположение в активном режиме;
  • Разрешение пользователя ACCESS_BACKGROUND_LOCATION присутствует в AndroidManifest.xml приложения.

Вызовите метод следующим образом:

PushwooshLocation.requestBackgroundLocationPermission();

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

Anchor link to

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

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

  1. Приблизительное местоположение, которое эквивалентно ACCESS_COARSE_LOCATION
  2. Точное местоположение, которое эквивалентно ACCESS_FINE_LOCATION и ACCESS_COARSE_LOCATION

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

Anchor link to

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