Не хватает опыта, подскажите, в каком направлении копать, что может происходить не так?
В мобильном приложении при запуске главного окна запускается обработчик изменения местоположения.
Недавно пользователь обратился с ошибкой: после включения приложения начал с ним работу - запускал обмены, ещё что-то делал. Но первые координаты смог получить только спустя 20 минут работы в приложении. Смотрю по логам - gps включенный, кроме того, пользователь пытался ещё вручную, с помощью другой процедуры получить местоположение (безуспешно).
На этапе тестирования тоже замечала, что процедура не всегда стабильно получает данные о местоположении - то сидишь, ждёшь, телефон туда-сюда носишь по 15 минут и ничего не происходит, то стабильно работает и всё получается.
Команда, которой подключаю обработчик:
Оповещение= Новый ОписаниеОповещения("ОбработчикИзмененияМестоположения", СлужебныйКлиент);
СредстваГеопозиционирования.ПодключитьОбработчикИзмененияМестоположения(Оповещение, "gps", , 10);
В ОбработчикИзмененияМестоположения происходит запись в регистр полученных координат (не чаще, чем раз в минуту).
Вопрос: от чего это зависит начало получения координат данной функцией, как сократить время получения первых координат до минимума? Может, кто-то сталкивался и работал уже с этим функционалом?
Более-менее удалось добиться результата путём подключения фоном нескольких обработчиков изменения местоположения - network, как самого быстрого, gps - как самого точного.
События обрабатываются асинхронно, координаты получаются быстро, за исключением нескольких непонятных случаев, когда либо пользователь закрывает приложение, либо теряется напрочь всяческая связь с космосом.
Правда, это породило уже другую проблему - как получать координаты нон-стопом, даже уходя в фон.
Процесс определения координат не зависит от 1С
пробовал минимизировать время : сначала координаты по вышкам сотовой связи - погрешность иногда в километры, определение координат по спутникам занимает различное время - от "очень быстро" до 2-3 минут или дольше если планшет пару суток не включался.
В 1С нет механизма сигнализации что изменилось месторасположение. Если только сравнивать сохраненные координаты с новыми
Если только сравнивать сохраненные координаты с новыми
Получать принудительно другим способом координаты через процедуру ОпределитьМестоположение() не получается - виснет приложение, иногда даже вылетает - как результат пользователи негодуют.
минуты 4-5 это уж если человек с планшетом находится в очень нехороших условиях
Получать принудительно другим способом координаты через процедуру ОпределитьМестоположение() не получается - виснет приложение, иногда даже вылетает - как результат пользователи негодуют.
у нас сторонняя программа занимается определением координат: в ней сразу на карте отображается текущее местоположение.
Описание общих принципов тут: https://infostart.ru/1c/articles/613225/ как сделано у нас:
программа самописная и сделана для того чтобы 1. Учет используемой техники (в работе больше 100 планшетов) 2. Более точное определение (визуальный контроль на карте) местоположения.
в коде мобильной 1С
&НаКлиенте
Процедура ПолучитьДанные(Команда)
#Если МобильноеПриложениеКлиент Тогда
НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие="ru.w0rm.intent.action.GetData"; ----------> тут вызов
НовВз.Запустить(Истина);
Для Каждого Стр Из НовВз.ДополнительныеДанные Цикл
Сообщить(Стр.Ключ+" - "+Стр.Значение);
КонецЦикла;
#КонецЕсли
КонецПроцедуры
Показать
потом после нажатия кнопки в программе разбор полученных данных.
Более-менее удалось добиться результата путём подключения фоном нескольких обработчиков изменения местоположения - network, как самого быстрого, gps - как самого точного.
События обрабатываются асинхронно, координаты получаются быстро, за исключением нескольких непонятных случаев, когда либо пользователь закрывает приложение, либо теряется напрочь всяческая связь с космосом.
Правда, это породило уже другую проблему - как получать координаты нон-стопом, даже уходя в фон.