Core Bluetooth: узнайте, доступно ли устройство для переподключения - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь использовать метод retrievePeripheralsWithIdentifiers: для подключения к ранее подключенному периферийному устройству.Попытки подключения будут успешными, только если периферийное устройство находится в непосредственной близости от устройства iOS.

Теперь, как мне выяснить, находится ли известное периферийное устройство в непосредственной близости и, следовательно, может быть подключено в ближайшем будущем?

Если вы посмотрите руководство по Bluetooth для ядра здесь и прокрутите вниз до рисунка 5.1, Apple описывает возможный процесс переподключения.В первом столбце этой диаграммы есть условное « Доступное устройство? » Какой метод или элемент отражают эту доступность?

1 Ответ

0 голосов
/ 18 января 2019

«Устройство доступно?» окно ссылается на centralManager(_:didConnect:), который был вызван. Если вы посмотрите на поле выше, это «Попробуйте подключиться». Если это успешно, то устройство доступно.

Это почти всегда правильный подход. Не спрашивайте "это может быть успешным?" Просто попробуй. Если это работает, это работает.

Если вы действительно хотите знать близлежащие, но не подключенные устройства, вы можете отсканировать их, если они рекламируют, используя scanForPeripherals(withServices:options:). Затем вы можете проверить, является ли какая-либо обнаруженная периферия той, которую вы ищете.

Конечно, устройство может быть поблизости, а не реклама. Возможно, он подключен к другому устройству, и в этом случае вы его не видите. Возможно, он подключен к вашему устройству, и в этом случае вам понадобится retrieveConnectedPeripherals, чтобы увидеть его. Это может быть просто не реклама (многие устройства прекращают рекламу через некоторое время). В этом случае вы не сможете увидеть его, не пытаясь подключиться к нему.

Но обычно правильный ответ - просто попытаться подключиться, если вы уже знаете устройство. Установите время ожидания, и, если оно истекло, оно, вероятно, не рядом. Или не устанавливайте тайм-аут, просто дайте ему попытаться подключиться, пока он не заработает.

...