6

Я собираюсь внедрить функцию с геозонностями и прежде чем выполнить какую-либо серьезную работу, мне нужно знать, остаются ли геозоны активными после первого перехода ,Являются ли Android Geofences активными до удаления/истечения срока действия или только до тех пор, пока не будет запущен мой PendingIntent.

Ядро функции является:

каждый раз Я в х метрах от точки Р (назовем это Area A), я хочу Действие B произойти.

Что мне нужно знать

  • ли я просто добавить Geofence с Geofence.NEVER_EXPIRE и будьте уверены, что я получаю PendingIntent каждый раз Я вхожу в указанную область, независимо от прошедшее время, перезагрузки и т.д.

ИЛИ

  • Должен ли я перерегистрировать этот геофенсизм после того, как выйду из района А, чтобы получить уведомление при следующем вводе Площадь A?

Я надеюсь, что бывший в случае

ответ

7

Хорошее предложение является первым один. Если вы создаете геозонность с флагом NEVER_EXPIRE как время истечения срока, вам не придется перерегистрировать ее при ее запуске (путем входа или выхода). Я на 100% уверен в этом, сейчас я только что закончил кодирование и тестирование POC о геозонности.

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

Время истечения

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

Для остановки GeoFence мониторинга, вы удалите геозоны сами

+0

_I 100% уверен this_ Спасибо @Marcel – copolii

+0

Я обычно пугаются, когда кто-то говорит: «Я 100% уверен в этом» ... это работает так или иначе – lelloman

+0

мы сейчас живем в эпоху сомнений –

6

Пожалуйста, помните, что NEVER_EXPIRE заставит геозоны быть зарегистрированы даже после того, как пользователь удалит приложение в случае, если приложение не удаляет их. Невозможно удалить их. Когда-либо. Поэтому они будут продолжать разряжать батарею. Поэтому рекомендуется установить время истечения срока действия и снова установить геозонность, если они истекут, прежде чем вы захотите их.

+3

очень действует но мне интересно, почему это реализовано именно так. Если приложение X будет удалено, мы точно знаем, что для обслуживания PendingIntent ничего не будет доступно. Интересно, если это ошибка ... это, безусловно, так кажется ... после удаления моего приложения с вашего устройства у меня на вашем телефоне нулевой бизнес. – copolii

+8

@hajons Это где-то в документации? Откуда вы знаете, что эти ограждения сохраняются даже после удаления? –

+0

Это не похоже на правду, так как в [documentation] (https://developer.android.com/training/location/geofencing.html) говорится, что вам нужно перерегистрировать геолокации, когда приложение будет удалено, и повторно -установлен. Если бы они были сохранены через удаленные объекты, которые не были бы необходимы. –

1

Обратите внимание, что «все зарегистрированные геофотоснимки будут удалены» в случае THIS (то есть когда пользователь отключает местоположение, это его настройки телефона).

БУДЬТЕ ПРЕДУПРЕЖДЕНЫ: в верхней части этой документации указано предупреждение «Этот класс устарел. Используйте LocationServices».

1

В то время как вы получите ожидающее намерение (переход) независимо от того, сколько раз вы вводите/выходите из геофорума, улов в том, что перезагрузка устройства удалит все ваши геозоны. Таким образом, в случае перезагрузки устройства необходимо снова перерегистрировать все геозоны (которые вы сэкономили бы через общие предпочтения), используя широковещательный приемник и установить пристальное действие фильтра

android.intent.action.BOOT_COMPLETED

и разрешение:

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

в AndroidManifest.xml.

Также помните, что система восстанавливает геообъекты, даже если Google Play Services убит + перезапущен/обновлен, но нет, если вы очистите его данные. То же самое можно упомянуть в разделе developer docs в разделе «Повторная регистрация геообъектов только по необходимости»

Также обратите внимание, что если пользователь переключит ИЛИ отключит настройку местоположения/gps, все геофотоснимки будут удалены, а намерение созданный предоставленным ожидающим намерением. В этом случае hasError() api вернет true и getErrorCode() api вернет GEOFENCE_NOT_AVAILABLE.