Я разрабатываю приложение для iOS в Swift, которое отслеживает события маяка. Это моя первая настоящая работа с маяком.
Я использую маяки Estimote, но не использую Estimote SDK. Я использую основное местоположение и CLLocationManager с событиями didExit и didEnter.
Я только прослушиваю маяки, которые зарегистрированы с текущим пользователем, который вошел в мое приложение. Например, Джон Доу может быть зарегистрирован в маяках A и B, а Мэри Сью зарегистрирована только в маяке C. Я сталкиваюсь с большим количеством ложных листьев и думаю, не из-за того ли это, где я реализую свой код.
Я понимаю, что при проверке события ухода по умолчанию существует 30-секундная задержка, но я испытываю периоды продолжительностью более 30 секунд без сигнала Bluetooth в упор. Возможно, реализовать 30-минутное окно, а не 30 секунд для проверки выхода?
Поскольку пользователь должен войти в систему, чтобы узнать, какие маяки отслеживать, диспетчер местоположения находится в контроллере представления профиля пользователя по умолчанию. Я успешно получаю взаимодействие с маяком, даже когда телефон заблокирован, но это непоследовательно. Я обеспокоен, потому что знаю, что сам контроллер представления приостановлен/активирован по усмотрению iPhone и может выявить недостатки в моей логике.
Должен ли весь ориентированный на местоположение код помещаться в файл делегата приложения? Если я реализую протокол из своего представления профиля в делегате приложения, я могу сначала создать его там в делегате приложения, а затем получить данные маяка позже, как только пользователь войдет в систему.
Я изо всех сил пытался найти «соглашение о маяках iOS» в своем исследовании, просто примеры, которые дают некоторые результаты. Не слишком уверен, что на самом деле считается правильной практикой.
Спасибо!