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