Я разрабатываю приложение AIR для iOS, и у меня есть только одна проблема, оставленная в моем списке ошибок для исправления. В принципе, при открытии определенного окна пользователь может использовать свою текущую позицию для поиска. Для этого я использую класс Geolocation, и он отлично работает, за исключением того факта, что StatusEvent.STATUS не срабатывает. Пользователю будет предложено дать разрешение на использование своего текущего местоположения, как и должно быть, но когда они выберут, мой обработчик StatusEvent никогда не вызывается.Geolocation StatusEvent Never Fires
if (Geolocation.isSupported) {
var geo:Geolocation = new Geolocation();
geo.addEventListener(StatusEvent.STATUS, this.geolocationStatusHandler);
this.geolocationStatusHandler();
}
protected function geolocationStatusHandler(e:StatusEvent = null):void{
var geo:Geolocation = new Geolocation();
this.gpsButton.enabled = !geo.muted;
}
Единственное, что я могу думать о том, что окно предупреждения (которое замораживает выполнение приложения) открывается с новой геолокации(), прежде чем я добавить слушателя событий. Но если бы это было так, вызов обработчика вручную не произошел бы до тех пор, пока пользователь не закроет предупреждение (это происходит в то же время, примерно). Точка останова останавливает приложение, когда предупреждение открыто)
Есть ли решение для этого? Я всегда мог переместить подсказку в самое начало приложения, но лично я предпочитаю не запрашивать ее до тех пор, пока она не понадобится.
Детали:
- ActionScript Мобильный проект построен с AIR 3.6 SDK
- Испытано на Ipad 2, 3 и Mini, все работает IOS 6.1.3
- Испытано в обоих выпуска и отладки режимов
Что вы знаете. Создание второго объекта геолокации перекрывало слушателей на первом объекте. Переключение на один объект зафиксировало это. Теперь я должен был подумать об этом. И да, UPDATE предназначен исключительно для получения позиции lat/long и не отправляет, когда пользователь меняет настройки местоположения. Спасибо, что указал на мою глупость. –