Я использую фреймворк core-bluetooth для своего приложения на Iphone-4s.
Обычно это должно быть фоновое приложение, которое может работать как можно дольше.
Теперь он работает только в течение 40 минут - максимум 1 час.
Я надеюсь хотя бы на 1 день или около того.
Для этого в ключ «Требуемые фоновые режимы» в файле .plist добавлено значение «Bluetooth-central».
Похоже, мое приложение перейдет в режим «приостановки» в конце. поскольку, когда я снова открываю приложение (фоновое состояние на переднем плане), оно снова отправляет уведомление, это означает, что соединение Bluetooth все еще подключено, а BLE-устройство все еще отправляет уведомление. Если я нажму кнопку «Домой», и приложение перейдет в фоновый режим, оно НЕ получит уведомление снова.
Кто-нибудь может сказать мне, почему мое приложение работает в фоновом режиме не более 1 часа? Оно должно продолжать работать как обычное музыкальное приложение в фоновом режиме почти вечно.
Говорит ли Apple что-нибудь конкретное о том, при каких условиях фоновое приложение (которое является одним из тех непрерывно работающих фоновых приложений, подпадающих под 5 категорий), в противном случае оно перейдет в режим ожидания?
Ссылаясь на «iPhoneAppProgrammingGuide
» в разделе «Связь с аксессуаром Bluetooth
»,
Я узнал, что для длительной фоновой задачи для приложения Bluetooth LE необходимы 2 реализации:
1) Ключ UIBackgroundModes должен быть «центральным bluetooth» в файле Info.plist
.
2) Любое приложение, поддерживающее фоновую обработку данных Bluetooth, должно быть основано на сеансе.
Итак, для моего приложения была включена ПЕРВАЯ реализация, и благодаря этому приложение может работать в фоновом режиме и выполнять все задачи для максимальная продолжительность 1 час.
Теперь мне нужно реализовать вторую реализацию. то есть на основе сеанса. Что позволит получать события, даже если приложение находится в состоянии «приостановить».
согласно документации. Я попытался найти подходящий сеанс, специфичный для Bluetooth LE (основная структура Bluetooth), например
«EASession
» присутствует для классического Bluetooth (инфраструктура внешних аксессуаров). Но я не нашел.
По сути, я не уверен, какой класс сеанса мне нужно использовать для целей BLE. Для аудио/видео, сети и Интернета, внешний аксессуар, доступны индивидуальные занятия. Для Core Bluetooth framework нет.
Кто-нибудь может мне помочь, какой сеансовый класс подходит для BLE.