Делегат диспетчера местоположения
Во время работы с имитатором за пределами его окна может появиться диалоговое окно, в котором запрашивается разрешение на использование текущего местоположения пользователя. В таком случае местоположение будет определено с помощью сверхсекретного алгоритма, скрытого в глубоких подвалах штаб-квартиры компании Apple в г. Купертино.
Построим небольшое приложение для обнаружения текущего местоположения iPhone и общего расстояния, пройденного за время работы данного приложения.
Итак, создайте в среде Xcode новый проект, используя шаблон View-based Application и выбрав вариант iPhone из раскрывающегося списка Product. Присвойте новому проекту имя WhereAml. Откройте папки Classes и Resources и выберите заголовочный файл WhereAmlViewController. h. Внесите в этот файл изменения.
Прежде всего обратите внимание на включение в данный проект заголовочных файлов подсистемы Core Location. Ведь подсистема Core Location не входит в состав комплекта UIKit, и поэтому мы должны включить заголовочные файлы этой подсистема вручную. Далее приводим объект класса UlViewController в соответствие с методом делегата CLLocationManagerDelegate, чтобы иметь возможность получать сведения от диспетчера местоположения.
После этого объявляем указатель CLLocationManager, которым будем пользоваться для хранения создаваемого экземпляра подсистемы Core Location. Кроме того, объявляем указатель на объект типа CLLocation, который мы настроим на местоположение, получаемое от диспетчера местоположения при первом обновлении. Следовательно, если пользователь запустит рассматриваемое здесь приложение и переместится достаточно далеко, чтобы инициировать обновления своего местоположения, нам удастся рассчитать расстояние, на которое он переместился. Наш делегат будет уведомляться при каждом вызове о предыдущем, но не о первоначальном местоположении, для чего мы его и сохраняем.
Остальные переменные экземпляра представляют собой выходы, которые будут использоваться для обновления меток в пользовательском интерфейсе.
- Дата: 25-01-2015, 13:00