#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 с точки зрения мониторинга региона, поэтому, если бы мне пришлось угадывать, я бы сказал, что это более чем вероятно возможно.