«Устройство доступно?» окно ссылается на centralManager(_:didConnect:)
, который был вызван. Если вы посмотрите на поле выше, это «Попробуйте подключиться». Если это успешно, то устройство доступно.
Это почти всегда правильный подход. Не спрашивайте "это может быть успешным?" Просто попробуй. Если это работает, это работает.
Если вы действительно хотите знать близлежащие, но не подключенные устройства, вы можете отсканировать их, если они рекламируют, используя scanForPeripherals(withServices:options:)
. Затем вы можете проверить, является ли какая-либо обнаруженная периферия той, которую вы ищете.
Конечно, устройство может быть поблизости, а не реклама. Возможно, он подключен к другому устройству, и в этом случае вы его не видите. Возможно, он подключен к вашему устройству, и в этом случае вам понадобится retrieveConnectedPeripherals
, чтобы увидеть его. Это может быть просто не реклама (многие устройства прекращают рекламу через некоторое время). В этом случае вы не сможете увидеть его, не пытаясь подключиться к нему.
Но обычно правильный ответ - просто попытаться подключиться, если вы уже знаете устройство. Установите время ожидания, и, если оно истекло, оно, вероятно, не рядом. Или не устанавливайте тайм-аут, просто дайте ему попытаться подключиться, пока он не заработает.