Получать сигнал от маяка, пока приложение находится в фоновом режиме

У меня есть приложение для iOS, которое взаимодействует с маяком. Также есть функция для обнаружения сигнала от маяка, и если сигнал выходит за пределы диапазона, я хочу сохранить что-то в базе данных (в данном случае данные ядра)

    func updateDistance(distance: CLProximity) {
    UIView.animateWithDuration(1.0) { [unowned self] in
        switch distance {
        case .Unknown:
            self.view.backgroundColor = UIColor.grayColor()
            self.distanceReading.text = "No Beacon Signal Detected"
            updateDatabaseWithLocation()

        }
    }
}

Таким образом, приложение работает нормально, пока приложение работает на переднем плане. Насколько я понимаю, приложение также может работать в фоновом режиме, когда пользователь не использует приложение и все еще получает сигнал от маяка. Если так, как я могу выполнить эту задачу?
Я добавил следующее в info.plist и все еще не работал.
Также возможно ли обновить базу данных? введите описание изображения здесь

1 ответ

Решение

Вы можете выбирать только маяки (что дает вам доступ к приблизительным расстояниям), когда приложение работает. Как только вы покинете приложение (нажмите кнопку "Домой", перейдите к другому приложению и т. Д.), IOS приостановит приложение, и ранжирование перестанет работать. Непрерывное использование Bluetooth-радио в фоновом режиме быстро разряжает аккумулятор смартфона.

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

Теперь события "вход" и "выход" сами по себе не дают вам доступа к приблизительным расстояниям. Однако, поскольку iOS на несколько секунд выведет ваше приложение в фоновый режим для обработки этих событий, ранжирование фактически возобновится на время (при условии, что вы не остановили его, пока приложение не было приостановлено), прежде чем iOS вернет приложение в спящий режим. снова.

Вы даже можете продлить "несколько секунд" до нескольких минут с помощью фонового выполнения задачи.

Все вышеперечисленное не требует использования фоновых режимов - только "всегда" авторизация для использования Location Services.

Обычно вы не можете держать приложение в фоновом режиме неопределенно долго с маяками. Фоновая поддержка строго регламентируется Apple и разрешена только, например, для приложений навигации или музыкальных приложений. Иногда люди пытаются использовать фоновый режим "местоположение", чтобы приложение работало в фоновом режиме (и, таким образом, может различать маяки), и некоторые даже сообщают, что смогли пройти его через процесс проверки, но, похоже, это больше исключение, чем правило.

Если вы все-таки решите попробовать, вам необходимо:

Это должно поддерживать приложение в фоновом режиме, даже если вы покинете его.

Другие вопросы по тегам