СредстваГеопозиционирования.ОтключитьОбработчикИзмененияМестоположения

Методы · DetachLocationChangeHandler

Отключает вызов указанной процедуры обработки изменения местоположения.

Синтаксис

ОтключитьОбработчикИзмененияМестоположения(<Процедура>, <ИмяПровайдера>)
Полное описание, параметры и ограничения

СредстваГеопозиционирования.ОтключитьОбработчикИзмененияМестоположения (LocationTools.DetachLocationChangeHandler)

СредстваГеопозиционирования (LocationTools)

ОтключитьОбработчикИзмененияМестоположения (DetachLocationChangeHandler)

Доступен, начиная с версии 8.3.3.

Синтаксис:
ОтключитьОбработчикИзмененияМестоположения(<Процедура>, <ИмяПровайдера>)
Параметры:

<Процедура> (необязательный)
Тип: ОписаниеОповещения, Строка.
Процедура обработки изменения местоположения, которую необходимо исключить.

<ИмяПровайдера> (необязательный)
Тип: Строка.
Содержит имя провайдера.
Описание:

Отключает вызов указанной процедуры обработки изменения местоположения.

Доступность:

Мобильный клиент, мобильное приложение (клиент).

Использование в версии:

Доступен, начиная с версии 8.3.3.

Методическая информация

Практические примеры

Наблюдать собственное местоположение и остановить подписку

Подключаем один обработчик с порогами 10 метров и 5 секунд, не сохраняем маршрут и не передаём координаты.

Где и как запускать

Полный клиентский модуль собственной мобильной управляемой формы. Назначьте команды указанным процедурам; функции/экспортные обработчики разместите на уровне модуля.

Подготовка

  1. Используйте собственное отдельное учебное мобильное приложение и собственный телефон. Эти методы доступны в мобильном клиенте/мобильном приложении (клиент), не в серверном общем модуле и не в тонком клиенте Windows.

  2. Создайте собственную управляемую форму с указанными в уроке командами и вставьте полный модуль одного урока. Для реального чтения/отслеживания вручную разрешите геопозиционирование приложению в ОС; проверьте требуемые разрешения и возможности в настройках собственного мобильного приложения.

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

  4. Последнее измерение не обязательно свежее. Точные координаты не выводятся в сообщения, не записываются в файл и не отправляются на ваш сервер. Геопровайдер ОС сам может использовать сеть согласно своим настройкам.

  5. В уроках отслеживания сначала изучите команду остановки. Не закрывайте форму до отключения собственных обработчиков/геозоны. Не используйте чужое приложение или приложение с рабочими геозонами.

&НаКлиенте
Перем УчебноеОповещениеПоложения;
&НаКлиенте
Перем УчебноеИмяПровайдера;

&НаКлиенте
Процедура НачатьУчебноеОтслеживание(Команда)
    Если УчебноеОповещениеПоложения <> Неопределено Тогда
        ВызватьИсключение "Сначала остановите собственное отслеживание";
    КонецЕсли;
    Провайдер = СредстваГеопозиционирования.ПолучитьСамогоЭнергоЭкономичногоПровайдера(Истина);
    Если Провайдер = Неопределено Тогда
        Сообщить("Самый энергоэкономичный провайдер недоступен");
        Возврат;
    КонецЕсли;
    УчебноеИмяПровайдера = Провайдер.Имя;
    УчебноеОповещениеПоложения = Новый ОписаниеОповещения("УчебноеПоложениеИзменилось", ЭтотОбъект, "guide-location");
    СредстваГеопозиционирования.ПодключитьОбработчикИзмененияМестоположения(УчебноеОповещениеПоложения, УчебноеИмяПровайдера, 10, 5);
    Сообщить("Отслеживается только собственный телефон. Завершите командой ОстановитьУчебноеОтслеживание");
КонецПроцедуры

&НаКлиенте
Процедура УчебноеПоложениеИзменилось(ИмяПровайдера, Измерение, ДополнительныеПараметры) Экспорт
    Если ДополнительныеПараметры <> "guide-location" Или ИмяПровайдера <> УчебноеИмяПровайдера Тогда
        Возврат;
    КонецЕсли;
    ПоказатьУчебныеХарактеристикиИзмерения(Измерение);
КонецПроцедуры

&НаКлиенте
Процедура ОстановитьУчебноеОтслеживание(Команда)
    Если УчебноеОповещениеПоложения = Неопределено Тогда
        Сообщить("Собственная подписка не сохранена");
        Возврат;
    КонецЕсли;
    СредстваГеопозиционирования.ОтключитьОбработчикИзмененияМестоположения(УчебноеОповещениеПоложения, УчебноеИмяПровайдера);
    УчебноеОповещениеПоложения = Неопределено;
    УчебноеИмяПровайдера = Неопределено;
    Сообщить("Собственная подписка отключена");
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьУчебныеХарактеристикиИзмерения(Измерение)
    Если Измерение = Неопределено Тогда
        Сообщить("Последнего измерения нет");
        Возврат;
    КонецЕсли;
    Сообщить("Момент измерения: " + Строка(Измерение.Дата));
    Точка = Измерение.Координаты;
    Сообщить(Точка.Широта >= -90 И Точка.Широта <= 90);
    Сообщить(Точка.Долгота >= -180 И Точка.Долгота <= 180);
    Сообщить("Высота определена числом: " + Строка(ТипЗнч(Точка.Высота) = Тип("Число")));
    Если Измерение.ГоризонтальнаяТочность = Неопределено Тогда
        Сообщить("Горизонтальная точность не определена");
    Иначе
        Сообщить("Горизонтальная точность, м: " + Строка(Измерение.ГоризонтальнаяТочность));
    КонецЕсли;
    Если Измерение.ВертикальнаяТочность = Неопределено Тогда
        Сообщить("Вертикальная точность не определена");
    Иначе
        Сообщить("Вертикальная точность, м: " + Строка(Измерение.ВертикальнаяТочность));
    КонецЕсли;
    Если Измерение.Скорость = Неопределено Тогда
        Сообщить("Скорость не определена");
    Иначе
        Сообщить("Скорость, км/ч: " + Строка(Измерение.Скорость * 3.6));
    КонецЕсли;
    Если Измерение.Направление = Неопределено Тогда
        Сообщить("Направление не определено");
    Иначе
        Сообщить("Направление, градусов: " + Строка(Измерение.Направление));
    КонецЕсли;
КонецПроцедуры

Разбор по шагам

  1. Команды НачатьУчебноеОтслеживание и ОстановитьУчебноеОтслеживание должны быть назначены до запуска.

  2. МинимальноеРасстояние передаётся в метрах, МинимальныйПериодВремени — в секундах. Это пороги запроса, не гарантия точного события каждые 5 секунд.

  3. Имя реально выбранного провайдера сохраняется вместе с оповещением. Отключение получает оба тех же значения, не пустые аргументы «отключить всё».

  4. Обработчик получает имя, настоящий ДанныеМестоположения и дополнительный маркер. Маркер — собственная маршрутизация, не средство защиты от поддельных событий.

  5. Не накапливаем измерения в массиве, не строим маршрут, не выводим точные координаты. Тем не менее дата/скорость измерения — личная информация; опыт только на своём телефоне.

Как проверить результат

  1. При доступном провайдере наблюдаются характеристики фактических измерений; Неопределённые поля остаются явно неизвестными.

  2. После остановки новые вызовы этой подписки должны прекратиться. Не считайте уже поставленное в очередь событие доказательством новой подписки.

Ожидаемый результат

Подготовлена ограниченная собственная подписка с точным отключением и без сохранения маршрута.

На что обратить внимание

  1. Отслеживание расходует батарею и требует разрешения приложения. Не оставляйте его активным после обучения.

  2. Порог 10 метров не означает точность GPS ровно 10 метров.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.