Есть ли возможность автоматически подключиться к bluetooth на фоне? [Дубликат]

1) Инициализировать массив arr и добавить элементы

2) задать переменную для поиска SEARCH_STRING

3) проверить, содержит ли ваш массив элемент

arr=()
arr+=('a')
arr+=('b')
arr+=('c')

SEARCH_STRING='b'

if [[ " ${arr[*]} " == *"$SEARCH_STRING"* ]];
then
    echo "YES, your arr contains $SEARCH_STRING"
else
    echo "NO, your arr does not contain $SEARCH_STRING"
fi
11
задан Haroldo Gondim 16 July 2015 в 01:38
поделиться

4 ответа

Пол был прав, что мне не нужно было отменять соединение, и мне не нужно было повторно сканировать и , что все, что мне нужно было сделать, это вызвать connectPeripheral. НО ... что я не делал, это:

_manager = [[CBCentralManager alloc]initWithDelegate:self queue:dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)];

Я пропустил нуль для очереди, а это значит, что мои обратные вызовы CBCentralManagerDelegate выполнялись в основном потоке.

7
ответ дан Andrew Duncan 22 August 2018 в 10:12
поделиться

В закладке «Возможности» -> «Фоновые режимы» выберите «Аксессуары для пользователей Bluetooth» и «Действует как аксессуар Bluetooth LE». Я не уверен, что он может работать, но вы можете попробовать.

0
ответ дан mengxiangjian 22 August 2018 в 10:12
поделиться
  • 1
    Благодарим за ваше предложение. Я уже использовал аксессуары Bluetooth LE. Я добавил Acts As, но это ничего не изменило. Хорошая идея. Всегда нужно попробовать вещи, которые не должны работать. Потому что они могут работать! – Andrew Duncan 12 November 2014 в 21:06

Вам не нужно отменять соединение - он уже отключен. Вам не нужно повторять сканирование для периферии - вы уже определили свое периферийное устройство.

В didDisconnectPeripheral вы можете просто позвонить

[central connectPeripheral:peripheral options:nil];

Core Bluetooth снова подключится, когда периферийное устройство снова будет видимым

. Полный образец здесь - https://github.com/paulw11/BTBackground

8
ответ дан Paulw11 22 August 2018 в 10:12
поделиться
  • 1
    К сожалению, не для меня. Фактически, используя connectPeripheral (вместо повторного вызова scanForPeripherals), мое приложение не пересоединяется, даже если оно все еще находится на переднем плане. Соединение никогда не восстанавливается. Если я вызываю scanForPeripheral в didDisconnectPeripheral, I do повторно подключается, если на переднем плане, но все еще не в фоновом режиме. Grr. – Andrew Duncan 12 November 2014 в 20:29
  • 2
    Устройство представляет собой TI SensorTag, FWIW. – Andrew Duncan 12 November 2014 в 20:29
  • 3
    ОК. Теги датчиков раздражают - они закрываются через несколько минут, поэтому я не уверен, что это ваша проблема. Устройства iOS также трудно работать, поскольку они меняют MAC-адрес каждые несколько минут. У меня есть сенсорный тег, поэтому я буду играть и посмотреть, что произойдет. Мне может потребоваться день или два ... – Paulw11 12 November 2014 в 20:32
  • 4
    Вы правы, что мне не нужно отключать. – Andrew Duncan 12 November 2014 в 21:02
  • 5
    Спасибо, Пол. Я не думаю, что это связано с любым автоматическим отключением. Это я намеренно отключился (или прогуливался на расстоянии 50 м), чтобы вызвать потерю связи. Я тоже буду отключаться. Должна быть решена проблема .. или все в одном рассоле. – Andrew Duncan 12 November 2014 в 21:03
  • 6

Я знаю, что вы, наверное, уже все поняли. Я сам тоже наткнулся на эту проблему. Выполнение следующих действий не полностью решило проблему (по крайней мере, для меня): [central connectPeripheral:peripheral options:nil];

Вместо «nil» для параметров вам нужно будет предоставить «параметры» в указанном выше методе. Есть и другие вещи, которые вам нужно настроить (например, info.plist для вашего приложения). После прочтения инструкции Apple о том, как включить фоновое подключение к Bluetooth для приложения. Я смог заставить его работать и получать события для подключения, отключения, обновления и т. Д., Даже сканирование может работать на заднем плане. Чтобы не повторять все, что написал документ Apple, вы можете взглянуть на следующую ссылку: Основная обработка фонового изображения Bluetooth для приложений iOS

Надеюсь, это поможет.

3
ответ дан us_david 22 August 2018 в 10:12
поделиться
  • 1
    Для меня ключ передавал соответствующий параметр для очереди, как указано выше. Тем не менее, варианты определенно актуальны. Благодарю. – Andrew Duncan 22 January 2015 в 01:44
Другие вопросы по тегам:

Похожие вопросы: