Я написал приложение, которое должно получить информацию, когда какое-то устройство Bluetooth Low Energy выходит в пределах диапазона. При обнаружении устройства BLE мое приложение просто сохраняет отметку времени.
Как указано в видеороликах Bluetooth для основного WWDC 2012, есть две возможности для приложений для работы в фоновом режиме при работе с Core Bluetooth:
Фундаментация событий
Фоновая информация о событиях, вероятно, является тем, что большинство приложений будет использоваться при взаимодействии с устройствами Bluetooth Low Energy. Эта режим не допускает прямой связи с аксессуаром, когда приложение находится в фоновом режиме, но предоставляет уведомление от аксессуар, когда он хочет общаться с приложением. iOS будет оставаться на связи с аксессуаром BTLE, когда ваше приложение находится в и будет продолжать отслеживать уведомления. Когда связанный аксессуар BTLE имеет уведомление, iOS будет уведомлять пользователь, которому аксессуар хотел бы поговорить с вашим приложением, позволяя пользователь загружает ваше приложение и взаимодействует с аксессуаром. Так много устройствам необходимо экономить электроэнергию, предоставляя информацию только на детерминированные времена значительно увеличат время автономной работы аксессуаров и iPhone 4S.
- Для этого режима не требуются записи info.plist.
Фундаментация сеанса
Иногда приложение должно взаимодействовать с аксессуар, даже если он работает в фоновом режиме. Рассмотрим которое требует мониторинга частоты сердечных сокращений в реальном времени. Eсть очистите START и STOP к этой модели. Пользователь ЗАПУСКАЕТ их запуск в Приложение. Пока запуск активен, приложение считывает информацию о частоте сердечных сокращений пока запуск не завершится или не будет остановлен. Подсчет сеансов также позволяет сканировать и подключаться к аксессуарам BTLE, в то время как приложение находится в фоновом режиме. Сканирование для периферийных устройствWithServices или connectPeripheral call будет продолжен, даже если приложение находится в задний план. CoreBluetooth продолжит мониторинг для конкретных периферийных устройств или периферийных устройств, которые соответствуют службам, которые ищет приложение для и вызывать делегат приложений при обнаружении или подключении. Будьте внимательны, что каждый раз, когда периферийное устройство BTLE или iPhone 4S использует свое радио истощая доступную мощность соответствующих устройств. Разработчики приложений использование фоновой сессии, основанной на сеансах, должно учитывать потребление энергии.
- Для фоновой сессии сеанса требуется вход в фоновый режим для UIBackgroundModes, bluetooth-central, в вашем приложении info.plist.
До сих пор я Session Backgrounding (с соответствующей записью info.plist). Приложение запрашивает iOS для извлечения всех известных устройств, а затем дает команду connect на устройство, которое я ищу. Обратный вызов соединения приходит даже после нескольких минут после моего приложения.
Но: приложение приостанавливается после - скажем - один час. Это означает, что в следующий раз, когда приложение будет запущено пользователем, оно не сможет определить, были ли какие-либо наблюдения для устройства BLE, представляющего интерес.
Так что мой вопрос: Возможно ли, чтобы мое приложение получало уведомление без участия пользователя даже через несколько дней после отправки на задний план, когда какое-то устройство BLE входит в диапазон, чтобы я мог хранить свою метку времени?