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
Пол был прав, что мне не нужно было отменять соединение, и мне не нужно было повторно сканировать и , что все, что мне нужно было сделать, это вызвать connectPeripheral. НО ... что я не делал, это:
_manager = [[CBCentralManager alloc]initWithDelegate:self queue:dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)];
Я пропустил нуль для очереди, а это значит, что мои обратные вызовы CBCentralManagerDelegate выполнялись в основном потоке.
В закладке «Возможности» -> «Фоновые режимы» выберите «Аксессуары для пользователей Bluetooth» и «Действует как аксессуар Bluetooth LE». Я не уверен, что он может работать, но вы можете попробовать.
Вам не нужно отменять соединение - он уже отключен. Вам не нужно повторять сканирование для периферии - вы уже определили свое периферийное устройство.
В didDisconnectPeripheral
вы можете просто позвонить
[central connectPeripheral:peripheral options:nil];
Core Bluetooth снова подключится, когда периферийное устройство снова будет видимым
. Полный образец здесь - https://github.com/paulw11/BTBackground
Я знаю, что вы, наверное, уже все поняли. Я сам тоже наткнулся на эту проблему. Выполнение следующих действий не полностью решило проблему (по крайней мере, для меня): [central connectPeripheral:peripheral options:nil];
Вместо «nil» для параметров вам нужно будет предоставить «параметры» в указанном выше методе. Есть и другие вещи, которые вам нужно настроить (например, info.plist для вашего приложения). После прочтения инструкции Apple о том, как включить фоновое подключение к Bluetooth для приложения. Я смог заставить его работать и получать события для подключения, отключения, обновления и т. Д., Даже сканирование может работать на заднем плане. Чтобы не повторять все, что написал документ Apple, вы можете взглянуть на следующую ссылку: Основная обработка фонового изображения Bluetooth для приложений iOS
Надеюсь, это поможет.