Отключает вызов указанной процедуры обработки изменения местоположения.
Синтаксис
ОтключитьОбработчикИзмененияМестоположения(<Процедура>, <ИмяПровайдера>)Полное описание, параметры и ограничения
СредстваГеопозиционирования.ОтключитьОбработчикИзмененияМестоположения (LocationTools.DetachLocationChangeHandler)
СредстваГеопозиционирования (LocationTools)
ОтключитьОбработчикИзмененияМестоположения (DetachLocationChangeHandler)
Доступен, начиная с версии 8.3.3.
Синтаксис:
ОтключитьОбработчикИзмененияМестоположения(<Процедура>, <ИмяПровайдера>)
Параметры:
<Процедура> (необязательный)
Тип: ОписаниеОповещения, Строка.
Процедура обработки изменения местоположения, которую необходимо исключить.
<ИмяПровайдера> (необязательный)
Тип: Строка.
Содержит имя провайдера.
Описание:
Отключает вызов указанной процедуры обработки изменения местоположения.
Доступность:
Мобильный клиент, мобильное приложение (клиент).
Использование в версии:
Доступен, начиная с версии 8.3.3.
Методическая информация
Практические примеры
Наблюдать собственное местоположение и остановить подписку
Подключаем один обработчик с порогами 10 метров и 5 секунд, не сохраняем маршрут и не передаём координаты.
Где и как запускать
Полный клиентский модуль собственной мобильной управляемой формы. Назначьте команды указанным процедурам; функции/экспортные обработчики разместите на уровне модуля.
Подготовка
Используйте собственное отдельное учебное мобильное приложение и собственный телефон. Эти методы доступны в мобильном клиенте/мобильном приложении (клиент), не в серверном общем модуле и не в тонком клиенте Windows.
Создайте собственную управляемую форму с указанными в уроке командами и вставьте полный модуль одного урока. Для реального чтения/отслеживания вручную разрешите геопозиционирование приложению в ОС; проверьте требуемые разрешения и возможности в настройках собственного мобильного приложения.
Включённая геолокация устройства не равна разрешению конкретному приложению. Провайдер может использовать сеть, быть платным, расходовать батарею или не поддерживать отдельное поле. Отказ в доступе не обходите.
Последнее измерение не обязательно свежее. Точные координаты не выводятся в сообщения, не записываются в файл и не отправляются на ваш сервер. Геопровайдер ОС сам может использовать сеть согласно своим настройкам.
В уроках отслеживания сначала изучите команду остановки. Не закрывайте форму до отключения собственных обработчиков/геозоны. Не используйте чужое приложение или приложение с рабочими геозонами.
&НаКлиенте
Перем УчебноеОповещениеПоложения;
&НаКлиенте
Перем УчебноеИмяПровайдера;
&НаКлиенте
Процедура НачатьУчебноеОтслеживание(Команда)
Если УчебноеОповещениеПоложения <> Неопределено Тогда
ВызватьИсключение "Сначала остановите собственное отслеживание";
КонецЕсли;
Провайдер = СредстваГеопозиционирования.ПолучитьСамогоЭнергоЭкономичногоПровайдера(Истина);
Если Провайдер = Неопределено Тогда
Сообщить("Самый энергоэкономичный провайдер недоступен");
Возврат;
КонецЕсли;
УчебноеИмяПровайдера = Провайдер.Имя;
УчебноеОповещениеПоложения = Новый ОписаниеОповещения("УчебноеПоложениеИзменилось", ЭтотОбъект, "guide-location");
СредстваГеопозиционирования.ПодключитьОбработчикИзмененияМестоположения(УчебноеОповещениеПоложения, УчебноеИмяПровайдера, 10, 5);
Сообщить("Отслеживается только собственный телефон. Завершите командой ОстановитьУчебноеОтслеживание");
КонецПроцедуры
&НаКлиенте
Процедура УчебноеПоложениеИзменилось(ИмяПровайдера, Измерение, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры <> "guide-location" Или ИмяПровайдера <> УчебноеИмяПровайдера Тогда
Возврат;
КонецЕсли;
ПоказатьУчебныеХарактеристикиИзмерения(Измерение);
КонецПроцедуры
&НаКлиенте
Процедура ОстановитьУчебноеОтслеживание(Команда)
Если УчебноеОповещениеПоложения = Неопределено Тогда
Сообщить("Собственная подписка не сохранена");
Возврат;
КонецЕсли;
СредстваГеопозиционирования.ОтключитьОбработчикИзмененияМестоположения(УчебноеОповещениеПоложения, УчебноеИмяПровайдера);
УчебноеОповещениеПоложения = Неопределено;
УчебноеИмяПровайдера = Неопределено;
Сообщить("Собственная подписка отключена");
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьУчебныеХарактеристикиИзмерения(Измерение)
Если Измерение = Неопределено Тогда
Сообщить("Последнего измерения нет");
Возврат;
КонецЕсли;
Сообщить("Момент измерения: " + Строка(Измерение.Дата));
Точка = Измерение.Координаты;
Сообщить(Точка.Широта >= -90 И Точка.Широта <= 90);
Сообщить(Точка.Долгота >= -180 И Точка.Долгота <= 180);
Сообщить("Высота определена числом: " + Строка(ТипЗнч(Точка.Высота) = Тип("Число")));
Если Измерение.ГоризонтальнаяТочность = Неопределено Тогда
Сообщить("Горизонтальная точность не определена");
Иначе
Сообщить("Горизонтальная точность, м: " + Строка(Измерение.ГоризонтальнаяТочность));
КонецЕсли;
Если Измерение.ВертикальнаяТочность = Неопределено Тогда
Сообщить("Вертикальная точность не определена");
Иначе
Сообщить("Вертикальная точность, м: " + Строка(Измерение.ВертикальнаяТочность));
КонецЕсли;
Если Измерение.Скорость = Неопределено Тогда
Сообщить("Скорость не определена");
Иначе
Сообщить("Скорость, км/ч: " + Строка(Измерение.Скорость * 3.6));
КонецЕсли;
Если Измерение.Направление = Неопределено Тогда
Сообщить("Направление не определено");
Иначе
Сообщить("Направление, градусов: " + Строка(Измерение.Направление));
КонецЕсли;
КонецПроцедурыРазбор по шагам
Команды НачатьУчебноеОтслеживание и ОстановитьУчебноеОтслеживание должны быть назначены до запуска.
МинимальноеРасстояние передаётся в метрах, МинимальныйПериодВремени — в секундах. Это пороги запроса, не гарантия точного события каждые 5 секунд.
Имя реально выбранного провайдера сохраняется вместе с оповещением. Отключение получает оба тех же значения, не пустые аргументы «отключить всё».
Обработчик получает имя, настоящий ДанныеМестоположения и дополнительный маркер. Маркер — собственная маршрутизация, не средство защиты от поддельных событий.
Не накапливаем измерения в массиве, не строим маршрут, не выводим точные координаты. Тем не менее дата/скорость измерения — личная информация; опыт только на своём телефоне.
Как проверить результат
При доступном провайдере наблюдаются характеристики фактических измерений; Неопределённые поля остаются явно неизвестными.
После остановки новые вызовы этой подписки должны прекратиться. Не считайте уже поставленное в очередь событие доказательством новой подписки.
Ожидаемый результат
Подготовлена ограниченная собственная подписка с точным отключением и без сохранения маршрута.
На что обратить внимание
Отслеживание расходует батарею и требует разрешения приложения. Не оставляйте его активным после обучения.
Порог 10 метров не означает точность GPS ровно 10 метров.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.