Выполняет подключение обработчика изменения статусов провайдеров геопозиционирования присутствующих в системе.
Синтаксис
ПодключитьОбработчикИзмененияДоступностиПровайдеров(<Процедура>)Полное описание, параметры и ограничения
СредстваГеопозиционирования.ПодключитьОбработчикИзмененияДоступностиПровайдеров (LocationTools.AttachProvidersAvailabilityChangeHandler)
СредстваГеопозиционирования (LocationTools)
ПодключитьОбработчикИзмененияДоступностиПровайдеров (AttachProvidersAvailabilityChangeHandler)
Доступен, начиная с версии 8.3.10.
Синтаксис:
ПодключитьОбработчикИзмененияДоступностиПровайдеров(<Процедура>)
Параметры:
<Процедура> (обязательный)
Тип: ОписаниеОповещения, Строка.
Имя процедуры, подключаемой в качестве обработчика изменения доступности провайдеров.
Процедура должна иметь следующие параметры.
ИмяПровайдера - имя провайдера, чей статус был изменен. Тип Строка.
Доступен - новое состояние провайдера. Тип Булево.
<ДополнительныйПараметр> - значение, которое было указано при создании объекта ОписаниеОповещения, если для установки обработчика используется описание оповещения.
Описание:
Выполняет подключение обработчика изменения статусов провайдеров геопозиционирования присутствующих в системе.
Доступность:
Мобильный клиент, мобильное приложение (клиент).
Использование в версии:
Доступен, начиная с версии 8.3.10.
Описание изменено в версии 8.3.22.
Методическая информация
Практические примеры
Подключить и отключить свой обработчик доступности провайдеров
Полный модуль сохраняет собственное ОписаниеОповещения и передаёт тот же объект для отключения. Координаты не отслеживаются.
Где и как запускать
Полный клиентский модуль собственной мобильной управляемой формы. Назначьте команды указанным процедурам; функции/экспортные обработчики разместите на уровне модуля.
Подготовка
Используйте собственное отдельное учебное мобильное приложение и собственный телефон. Эти методы доступны в мобильном клиенте/мобильном приложении (клиент), не в серверном общем модуле и не в тонком клиенте Windows.
Создайте собственную управляемую форму с указанными в уроке командами и вставьте полный модуль одного урока. Для реального чтения/отслеживания вручную разрешите геопозиционирование приложению в ОС; проверьте требуемые разрешения и возможности в настройках собственного мобильного приложения.
Включённая геолокация устройства не равна разрешению конкретному приложению. Провайдер может использовать сеть, быть платным, расходовать батарею или не поддерживать отдельное поле. Отказ в доступе не обходите.
Последнее измерение не обязательно свежее. Точные координаты не выводятся в сообщения, не записываются в файл и не отправляются на ваш сервер. Геопровайдер ОС сам может использовать сеть согласно своим настройкам.
В уроках отслеживания сначала изучите команду остановки. Не закрывайте форму до отключения собственных обработчиков/геозоны. Не используйте чужое приложение или приложение с рабочими геозонами.
&НаКлиенте
Перем УчебноеОповещениеПровайдеров;
&НаКлиенте
Процедура НачатьНаблюдение(Команда)
Если УчебноеОповещениеПровайдеров <> Неопределено Тогда
ВызватьИсключение "Сначала остановите прежнее собственное наблюдение";
КонецЕсли;
УчебноеОповещениеПровайдеров = Новый ОписаниеОповещения("УчебнаяДоступностьИзменилась", ЭтотОбъект, "guide-providers");
СредстваГеопозиционирования.ПодключитьОбработчикИзмененияДоступностиПровайдеров(УчебноеОповещениеПровайдеров);
Сообщить("Собственный обработчик подключён. После опыта нажмите ОстановитьНаблюдение");
КонецПроцедуры
&НаКлиенте
Процедура УчебнаяДоступностьИзменилась(ИмяПровайдера, Доступен, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры <> "guide-providers" Тогда
Возврат;
КонецЕсли;
Сообщить("Провайдер " + ИмяПровайдера + "; доступен: " + Строка(Доступен));
Сообщить("Доступных сейчас: " + Строка(СредстваГеопозиционирования.ПолучитьПровайдеров(Истина).Количество()));
КонецПроцедуры
&НаКлиенте
Процедура ОстановитьНаблюдение(Команда)
Если УчебноеОповещениеПровайдеров = Неопределено Тогда
Сообщить("Собственный обработчик не сохранён");
Возврат;
КонецЕсли;
СредстваГеопозиционирования.ОтключитьОбработчикИзмененияДоступностиПровайдеров(УчебноеОповещениеПровайдеров);
УчебноеОповещениеПровайдеров = Неопределено;
Сообщить("Собственный обработчик отключён");
КонецПроцедурыРазбор по шагам
Создайте команды НачатьНаблюдение и ОстановитьНаблюдение. ОписаниеОповещения хранится в клиентской переменной формы, а не создаётся заново при отключении.
Экспортная процедура имеет три параметра: имя провайдера, доступность, дополнительные параметры уведомления.
Событие относится к доступности провайдера, не к смене координат. Показываем имя, состояние и число доступных провайдеров.
Отключаем только собственное оповещение и очищаем переменную после успешного вызова. При исключении она остаётся для повторного осмысленного завершения, не для скрытого бесконечного повтора.
Как проверить результат
На собственном телефоне переключите геолокацию вручную: если ОС сообщает изменение провайдера, появляется соответствующий вывод. Отсутствие события не выдавайте за доказанный сбой регистрации.
После ОстановитьНаблюдение этот собственный обработчик больше не должен получать новые события. Повторная остановка сообщает отсутствие сохранённого обработчика.
Ожидаемый результат
Подготовлен полный жизненный цикл одного обработчика доступности.
На что обратить внимание
Закрытие формы не заменяет явное отключение собственного обработчика в упражнении.
Не отключайте обработчики приложения по чужим строковым именам.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.