IOS Developpement: базовые сведения о BLE на Apple doc

Я все,

Я пытаюсь разработать два приложения, которые действуют как центральное и периферийное, которые автоматически подключаются друг к другу, когда они входят в диапазон Bluetooth, когда оба находятся в фоновом режиме.

Я опубликовал кое-что о моей проблеме (поскольку ни один из моих тестов не был убедительным) в этом сообщении: IOS Developpement: Background BLE scan.

Ответ, который я всегда нахожу в Интернете, прямо из документации Apple. Один пример публикации ( /questions/32739825/bazovaya-reklama-bluetooth-i-skanirovanie-v-fonovom-rezhime/32739843#32739843):

Проблема заключается в разнице в сканировании на переднем и заднем плане. Когда вы сканируете устройства на переднем плане, вы можете сканировать что угодно. В фоновом режиме вы должны указать фактический UUID службы, который вы сканируете. Хорошо, это на самом деле не проблема, так как вы знаете UUID, который вы ищете.

Периферийные. Вещание как периферийное устройство снова работает по-разному на переднем и заднем плане. На переднем плане это работает как любая нормальная периферия BT. В фоновом режиме он имеет очень ограниченное пространство для работы, поэтому UUID вашей периферии скрыт и не транслируется. Только когда центральное устройство (iPhone на переднем плане) запрашивает информацию от него, оно разбудит ваше приложение и покажет его UUID.

Таким образом, 2 отменяют друг друга. Поскольку фоновое сканирование может сканировать только устройства с определенным UUID, а фоновое периферийное устройство не может объявить свой UUID, они не могут видеть друг друга.

Но есть кое-что, чего я не понимаю: в моем центре я уже указываю UUID [centralmgr scanForPeripheralsWithServices:[NSArray arrayWithObject:servicesUUID] options:scanOptions];, Согласно функции, описанной выше, он не должен подключаться, когда периферийное устройство находится на заднем плане, а центральное на переднем плане, но это происходит!

У кого-нибудь есть представление о том, что происходит в этом конкретном случае? Или, может быть, решение подключить два моих устройства в фоновом режиме?

Спасибо!

PS: Также я нашел довольно старый ответ (2013).

1 ответ

Я думаю, что когда центральный находится на переднем плане, он может разбудить периферийное устройство, чтобы получить UUID, когда периферийное устройство обнаружено, но когда центральное находится на заднем плане, это не может. Вот почему не будет работать обе стороны в фоновом режиме.

Другие вопросы по тегам