Было бы разумно поместить логику мониторинга iBeacon в делегат приложения, чтобы жить в течение сеанса приложения? - PullRequest
0 голосов
/ 07 октября 2018

Я бы хотел, чтобы мой монитор приложений для iBeacons не зависел от показа определенного контроллера представления.Чтобы избежать дублирования кода, я должен поместить логику мониторинга iBeacon в делегат приложения?По сути, я бы хотел, чтобы приложение показывало локальное push-уведомление всякий раз, когда пользователь входит в регион, но при этом может просматривать приложение на разных экранах.

1 Ответ

0 голосов
/ 08 октября 2018

На самом деле вам не нужно вводить логику в AppDelegate (хотя для простых приложений я часто это делаю).Главное, что вам нужно сделать, чтобы ваше приложение запускалось в фоновом режиме, - это запускать логику для запуска мониторинга из метода didFinishLaunching AppDelegate. Пока вызов метода устанавливает мониторинг (даже если это так и происходит)вызывая логику в методе другого класса).это приведет к тому, что ваши методы обратного вызова мониторинга будут вызваны сразу после.

Пока вы удерживаете ссылку на класс, содержащий вашу логику в AppDelegate (например, сделаете его экземпляр переменной класса в AppDelegate), это не будетполучить мусор.

Если вы хотите получить доступ к состоянию этого класса в других частях вашего приложения, вы можете просто сделать его одиночным.Затем вы можете вызывать один и тот же экземпляр класса для доступа к своему состоянию отслеживания маяка из различных контроллеров представления.

Пример этого можно увидеть в классе BeaconTracker , который я создал для проекта с открытым исходным кодом, которыйиспользует именно такой подход Синглтона.Вы можете просмотреть контроллеры AppDelegate и View в одном проекте, чтобы увидеть, как они используются.

...