Получает информацию об отслеживаемой геозоне по указанному идентификатору для текущей информационной базы.
Синтаксис
ПолучитьОтслеживаемуюГеозону(<ИдентификаторГеозоны>)Полное описание, параметры и ограничения
СредстваГеопозиционирования.ПолучитьОтслеживаемуюГеозону (LocationTools.GetMonitoredGeofence)
СредстваГеопозиционирования (LocationTools)
ПолучитьОтслеживаемуюГеозону (GetMonitoredGeofence)
Доступен, начиная с версии 8.3.10.
Синтаксис:
ПолучитьОтслеживаемуюГеозону(<ИдентификаторГеозоны>)
Параметры:
<ИдентификаторГеозоны> (обязательный)
Тип: Строка.
Идентификатор отслеживаемой геозоны.
Возвращаемое значение:
Тип: Геозона.
Возвращает значение Неопределено, если геозона с указанным идентификатором отсутствует.
Описание:
Получает информацию об отслеживаемой геозоне по указанному идентификатору для текущей информационной базы.
Доступность:
Мобильный клиент, мобильное приложение (клиент).
Использование в версии:
Доступен, начиная с версии 8.3.10.
Методическая информация
Практические примеры
Создать одну собственную геозону и завершить её отслеживание
Полный учебный модуль задаёт центр из введённых координат, свой UUID, радиус 300 м и событие пересечения. Отключение чужих геозон запрещено.
Где и как запускать
Полный клиентский модуль собственной мобильной управляемой формы. Назначьте команды указанным процедурам; функции/экспортные обработчики разместите на уровне модуля.
Подготовка
Используйте собственное отдельное учебное мобильное приложение и собственный телефон. Эти методы доступны в мобильном клиенте/мобильном приложении (клиент), не в серверном общем модуле и не в тонком клиенте Windows.
Создайте собственную управляемую форму с указанными в уроке командами и вставьте полный модуль одного урока. Для реального чтения/отслеживания вручную разрешите геопозиционирование приложению в ОС; проверьте требуемые разрешения и возможности в настройках собственного мобильного приложения.
Включённая геолокация устройства не равна разрешению конкретному приложению. Провайдер может использовать сеть, быть платным, расходовать батарею или не поддерживать отдельное поле. Отказ в доступе не обходите.
Последнее измерение не обязательно свежее. Точные координаты не выводятся в сообщения, не записываются в файл и не отправляются на ваш сервер. Геопровайдер ОС сам может использовать сеть согласно своим настройкам.
В уроках отслеживания сначала изучите команду остановки. Не закрывайте форму до отключения собственных обработчиков/геозоны. Не используйте чужое приложение или приложение с рабочими геозонами.
Для геозон используйте отдельное учебное мобильное приложение без рабочих геозон. В системных настройках предоставьте ровно необходимые разрешения собственному приложению. Не редактируйте рабочее приложение ради запуска урока.
&НаКлиенте
Перем УчебнаяЗона;
&НаКлиенте
Перем УчебноеОповещениеГеозоны;
&НаКлиенте
Процедура НачатьУчебнуюГеозону(Команда)
Если ПодтверждениеГеозоны <> "ОТСЛЕЖИВАТЬ МОЮ УЧЕБНУЮ ГЕОЗОНУ" Тогда
ВызватьИсключение "Нужно собственное явное подтверждение геозоны";
КонецЕсли;
Если УчебнаяЗона <> Неопределено Тогда
ВызватьИсключение "Сначала остановите сохранённую собственную геозону";
КонецЕсли;
Если УчебнаяШирота < -90 Или УчебнаяШирота > 90 Или УчебнаяДолгота < -180 Или УчебнаяДолгота > 180 Тогда
ВызватьИсключение "Координаты центра вне допустимого диапазона";
КонецЕсли;
Если Не СредстваГеопозиционирования.ПроверитьВозможностьДобавленияОтслеживаемыхРегионов(1) Тогда
Сообщить("Добавление одной геозоны сейчас недоступно");
Возврат;
КонецЕсли;
Идентификатор = "guide-owned-" + Строка(Новый УникальныйИдентификатор);
Центр = Новый ГеографическиеКоординаты(УчебнаяШирота, УчебнаяДолгота);
УчебнаяЗона = Новый Геозона(Новый Структура("Ключ", "guide-book"), "Собственная учебная зона книги", Центр, 300);
УчебнаяЗона.Идентификатор = Идентификатор;
Сообщить(УчебнаяЗона.Радиус = 300);
Сообщить(УчебнаяЗона.Данные.Ключ = "guide-book");
Сообщить(УчебнаяЗона.Представление = "Собственная учебная зона книги");
Сообщить(УчебнаяЗона.Координаты.Широта = УчебнаяШирота);
УчебноеОповещениеГеозоны = Новый ОписаниеОповещения("УчебнаяГраницаПересечена", ЭтотОбъект, Идентификатор);
СредстваГеопозиционирования.ПодключитьОбработчикПересеченияГраницОтслеживаемыхГеозон(УчебноеОповещениеГеозоны);
ПодтверждениеГеозоны = "";
СредстваГеопозиционирования.ВключитьОтслеживаниеГеозон(УчебнаяЗона);
Полученная = СредстваГеопозиционирования.ПолучитьОтслеживаемуюГеозону(Идентификатор);
Сообщить("По собственному ID найдена: " + Строка(Полученная <> Неопределено));
КонецПроцедуры
&НаКлиенте
Процедура УчебнаяГраницаПересечена(Зона, Положение, ДополнительныеПараметры) Экспорт
Если УчебнаяЗона = Неопределено Тогда
Возврат;
КонецЕсли;
Если Зона.Идентификатор <> УчебнаяЗона.Идентификатор Или ДополнительныеПараметры <> УчебнаяЗона.Идентификатор Тогда
Возврат;
КонецЕсли;
Если Положение = ПоложениеОтносительноГеозоны.Внутри Тогда
Сообщить("Собственный телефон вошёл в учебную геозону");
ИначеЕсли Положение = ПоложениеОтносительноГеозоны.Снаружи Тогда
Сообщить("Собственный телефон вышел из учебной геозоны");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОстановитьУчебнуюГеозону(Команда)
Если УчебнаяЗона = Неопределено Тогда
Сообщить("Собственная зона в форме не сохранена");
Возврат;
КонецЕсли;
СредстваГеопозиционирования.ОтключитьОтслеживаниеГеозон(УчебнаяЗона.Идентификатор);
Если УчебноеОповещениеГеозоны <> Неопределено Тогда
СредстваГеопозиционирования.ОтключитьОбработчикПересеченияГраницОтслеживаемыхГеозон(УчебноеОповещениеГеозоны);
КонецЕсли;
Сообщить(СредстваГеопозиционирования.ПолучитьОтслеживаемуюГеозону(УчебнаяЗона.Идентификатор) = Неопределено);
УчебнаяЗона = Неопределено;
УчебноеОповещениеГеозоны = Неопределено;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСобственныеЗоны(Команда)
Зоны = СредстваГеопозиционирования.ПолучитьОтслеживаемыеГеозоны();
Сообщить("Геозон приложения: " + Строка(Зоны.Количество()));
Для Каждого Зона Из Зоны Цикл
Сообщить("С учебным префиксом: " + Строка(Лев(Зона.Идентификатор, 12) = "guide-owned-"));
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьТолькоОтдельноеУчебноеПриложение(Команда)
Если ПодтверждениеОчистки <> "ОЧИСТИТЬ ВСЕ МОИ УЧЕБНЫЕ ГЕОЗОНЫ" Тогда
ВызватьИсключение "Нужно подтверждение только для собственного отдельного учебного приложения";
КонецЕсли;
Зоны = СредстваГеопозиционирования.ПолучитьОтслеживаемыеГеозоны();
Для Каждого Зона Из Зоны Цикл
Если Лев(Зона.Идентификатор, 12) <> "guide-owned-" Тогда
ВызватьИсключение "Есть геозона без собственного учебного префикса; отключение всех запрещено";
КонецЕсли;
КонецЦикла;
ПодтверждениеОчистки = "";
СредстваГеопозиционирования.ОтключитьОтслеживаниеВсехГеозон();
Если УчебноеОповещениеГеозоны <> Неопределено Тогда
СредстваГеопозиционирования.ОтключитьОбработчикПересеченияГраницОтслеживаемыхГеозон(УчебноеОповещениеГеозоны);
КонецЕсли;
УчебнаяЗона = Неопределено;
УчебноеОповещениеГеозоны = Неопределено;
Сообщить(СредстваГеопозиционирования.ПолучитьОтслеживаемыеГеозоны().Количество() = 0);
КонецПроцедурыРазбор по шагам
Создайте четыре команды с именами процедур. В форме нужны числовые реквизиты УчебнаяШирота/УчебнаяДолгота и строковые ПодтверждениеГеозоны/ПодтверждениеОчистки, строки изначально пустые. Выберите собственный центр и введите точную фразу разрешения.
Радиус 300 задаётся в метрах; координаты в градусах. Новый Геозона принимает сериализуемые данные, представление, центр, радиус. Уникальный собственный ID задаём явно после конструктора.
ПроверитьВозможностьДобавленияОтслеживаемыхРегионов получает строго положительное количество 1, не радиус. Возможность добавить не доказывает разрешение ОС, текущую точность и будущее событие.
Оповещение получает геозону, положение Внутри/Снаружи и собственный ID из дополнительных параметров. События другой зоны игнорируются.
ОстановитьУчебнуюГеозону отключает только сохранённый собственный ID и тот же обработчик. Если регистрация/включение частично завершились ошибкой, сохранённые значения нужны для осмысленного завершения.
ОтключитьОтслеживаниеВсехГеозон показан отдельно только для собственного изолированного учебного приложения и после проверки префикса всех зон. Префикс — предохранитель, не криптографическое доказательство владения.
Не обещаем мгновенное событие на точной границе: ОС, разрешения, точность и фоновые ограничения влияют на доставку уведомлений. Не храните в геозоне реальные персональные данные.
Как проверить результат
Четыре проверки собственного описания дают Истина. После включения проверьте собственную зону по ID и при необходимости вручную пересеките её границу на своём телефоне.
После индивидуального отключения получение собственного ID должно дать Неопределено. Другие зоны не затронуты.
Команда очистки при чужом префиксе прекращает работу до ОтключитьОтслеживаниеВсехГеозон. Только в отдельном приложении со своими зонами итоговый список должен стать пустым.
Ожидаемый результат
Подготовлен полный жизненный цикл собственной геозоны с отдельным ограниченным упражнением массовой очистки.
На что обратить внимание
Никогда не применяйте массовую очистку к рабочему мобильному приложению; префикс сам по себе не доказывает владение.
В фоне ОС может показывать уведомления и расходовать батарею; отдельное приложение и собственное согласие обязательны.
Обработчики не гарантированно снимаются при потере процесса или закрытии формы. Завершите опыт штатными командами и проверьте настройки собственного приложения.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.