Проблема со временем в фоновом режиме для приложения Bluetooth LE для Iphone 4s

Я использую фреймворк 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.

23
задан null 25 June 2013 в 15:59
поделиться