Подтвердить что ты не робот

Искать все iBeacons, а не только с определенным UUID

Можно ли искать все iBeacons, которые находятся поблизости? Я знаю, что можно выполнить поиск iBeacons по UUID. Но я хочу найти все iBeacons рядом.

4b9b3361

Ответ 1

iBeacon - это область и имеет в качестве определяющего свойства UUID. Поэтому вы можете искать только те, которые соответствуют UUID. После того, как вы найдете один или несколько с определенным UUID, вы можете выяснить, что ближе всего использовать обратные вызовы делегатов, где маяки хранятся в массиве, упорядоченном по расстоянию.

В этом примере есть отличный пример кода, а также довольно подробный сеанс видеосвязи WWDC: "Что нового в Core Location"

Ответ 2

iBeacons - это конструкции более высокого уровня, чем обычные периферийные устройства BLE. Из того, что можно определить из документов Apple, маяки привязаны к их служебному UUID. т.е. семейство маяков - это "область", и вы входите в регион и выходите из него, исходя из диапазона и видимости маяка для вас, а не наоборот. К сожалению, Apple использует термин "регион", который большинство из нас, вероятно, ассоциируется с MapKit, поэтому это добавляет к общей путанице

Вот плохая новость: вы можете только сканировать для ProximityUUID, которые, как вы знаете, нет "wildcard" proximityUUID. Кроме того, CLBeacons не выставляют много возможностей для более низкого уровня кинетики CoreBluetooth, поэтому, если вы хотите найти все маяки, которые находятся рядом с вами, вам придется использовать CoreBluetooth, сканировать периферийные устройства, а затем посмотреть, хотя возвращаемые периферии и запросите каждого из них, чтобы найти маяки. Конечно, Apple не зарегистрировала (с Bluetooth SIG) или (пока) опубликовала характеристики iBeacon, поэтому вам понадобится сниффер BT, чтобы перепроектировать, что представляет собой iBeacon из любого другого устройства BLE.

Ответ 3

каждый APP будет использовать свой собственный UUID, используя "основные" и "второстепенные" значения целого для различения маяков.

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

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

UUID генерируется раз и навсегда, используя команду "uuidgen" в терминале.

К сожалению, нет протокола для фактического общения с маяками, поэтому нет никакого стандарта для получения местоположения маяка или любой другой полезной информации.

было бы намного лучше, если бы мы могли открыть соединение с маяком, как правило, самым близким, и получить от него дополнительные данные, не будучи в одной сети WIFI.

вам либо нужно использовать bonjour для связи с устройством через WIFI, либо использовать основной и младший идентификатор для получения данных из какого-либо веб-сервиса.

Ответ 4

К сожалению, на данный момент вы не можете найти произвольный iBeacon, не зная значения proximityUUID. Я пробовал писать прямо в COREBluetooth, и, хотя вы можете обнаружить и подключиться к передаче маяков в вашем регионе, то, что вы вернетесь, смехотворно, без отношения к BLE UUID. Поэтому вы даже не можете подтвердить, что периферийное устройство, к которому вы подключились, фактически является iBeacon.

Это не является ограничением спецификации BLE, скорее это ограничение, наложенное Apple. Также представляется, что это ограничение не существует для платформы Android.

Пока этот пробел не будет закрыт, Android будет иметь значительное преимущество перед iOS в этой области.

Я не согласен с предыдущими комментариями, что сканирование для UUID будет бесполезным. Напротив, если вы знали UUID маяка, вы могли бы создать карту маяка/местоположения/объекта в облаке и использовать его для навигации (при условии, что маяк был исправлен) с помощью веб-службы. Вы можете толковать источники данных, чтобы в конечном итоге очень богатая база данных пар сигналов UUID/location маяков была доступна всем, кто хотел написать приложения для местоположения. Возможно, именно поэтому Apple скрывает информацию; они могут держать это в своих целях.