Можно ли использовать Bluetooth с многозадачностью iOS?

#iphone #objective-c #ios #bluetooth

#iPhone #objective-c #iOS #bluetooth

Вопрос:

Я думаю, что ответ на этот вопрос отрицательный, но кто-нибудь знает, можно ли поддерживать соединение Bluetooth в фоновом режиме с iOS? Я думаю, я мог бы сохранить это с помощью фонового API конечных задач, но я не нашел ничего, указывающего, верно это или нет. Другим вариантом было бы использовать уведомления GPS и просто переподключаться каждый раз, когда приложение получает уведомление об изменении местоположения.

Ответ №1:

Вы правы. Это «НЕТ». Но если вы используете уведомление об изменении местоположения для пробуждения своего приложения, у вас может быть короткий период времени для использования Bluetooth.

Ответ №2:

Я думаю, что соединение Bluetooth должно поддерживаться, но если ваше приложение Bluetooth не является приложением переднего плана, оно не будет получать никаких данных / команд, когда оно станет передним планом, это произойдет.

Ответ №3:

Возможно, я использую этот трюк, чтобы разрешить приложению использовать API переднего плана для iBeacons, чтобы разрешить приложению работать в диапазоне, даже когда приложение находится в фоновом режиме.

Для работы с iBeacons используется высокопроизводительный API, и поэтому он может запускаться только тогда, когда приложение находится на переднем плане, и останавливает вызов всех делегатов, как только приложение переходит в фоновый режим.

Воспроизведение звукового файла без звука и добавление функции AirPlay в ваш список позволяет вашему приложению работать в фоновом режиме так же, как если бы оно было на переднем плане.

Я не уверен, сработает ли это в вашем случае, но поскольку iBeacons используют основные платформы Bluetooth и Core Location, это может просто сделать то, о чем вы просите.

http://yifan.lu/2013/12/17/unlimited-backgrounding-on-ios/

Примечание, хотя Apple не исправила этот трюк в iOS8 beta 5, возможно, они будут исправлены в обновлении.

Ответ №4:

Если вы используете iBeacons, есть встроенные API для обработки при входе / выходе из области маяка, и обычно у вас есть ~ 5 секунд на поиск маяков в этот момент, прежде чем приложение будет переведено в спящий режим. Теоретически, вы могли бы запустить фоновую задачу с обработчиком истечения срока действия, который мог бы позволить вам перемещаться в фоновом режиме в течение ~ 30 секунд, но я не проверил, что это так. Я знаю, что фоновая задача может быть запущена при вводе / выходе из обычных CLRegions в фоновом режиме, и функционально нет разницы между CLRegions и CLBeaconRegions с точки зрения мониторинга региона, поэтому, если бы мне пришлось угадывать, я бы сказал, что это более чем вероятно возможно.