Приложение должно перерегистрировать геозоны, если они все еще необходимы после следующих событий, поскольку система не может восстановить геозоны в следующих случаях:
- Устройство перезагружается. Приложение должно прослушивать действие завершения загрузки устройства, а затем повторно зарегистрировать необходимые геозоны.
- Приложение удаляется и переустанавливается.
- Данные приложения удаляются.
- Данные сервисов Google Play удаляются.
- Приложение получило предупреждение GEOFENCE_NOT_AVAILABLE. Обычно это происходит после отключения NLP (поставщика сетевого местоположения Android).
public static final int GEOFENCE_NOT_AVAILABLE
Сервис Geofence сейчас недоступен. Это может произойти в
следующих случаях: Определение местоположения устройства отключено. На устройствах Android
P и более поздних версий точность определения местоположения отключена. В версиях Android P
режим определения местоположения установлен на "Только устройство". Служба Geofence
доступна только в режиме «высокая точность» или «экономия заряда батареи».
Как обрабатывать оповещение GEOFENCE_NOT_AVAILABLE?
Должен ли я сделать следующее?
class GeofenceBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val geofencingEvent = GeofencingEvent.fromIntent(intent) ?: return
if (geofencingEvent.hasError()) {
val errorCode = geofencingEvent.errorCode
val errorMessage = GeofenceStatusCodes.getStatusCodeString(errorCode)
if (errorCode == GeofenceStatusCodes.GEOFENCE_NOT_AVAILABLE) {
// save to prefs that geofence wasn't available
// and at some point monitor that device location turned on again
// to re-register geofences?
}
Timber.e(errorMessage)
return
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... -geofences
Мобильная версия