Я хотел бы создать «официальный» рандомизированный UUID в своем приложении, прежде чем/вместо библиотеки CoreBluetooth IOS, получающей пакет iBeacon с реального устройства iBeacon и генерирующего рандомизированный UUID в это время.Могу ли я предварительно генерировать UUID от CoreBluetooth до того, как IOS получит рекламный пакет iBeacon?
Позвольте мне объяснить. CoreBluetooth, когда он получает пакет iBeacon, создаст случайно сгенерированный UUID, который он будет использовать для привязки к определенному устройству iBeacon. Используя CoreBluetooth, разработчики не имеют доступа к фактическому UUID, Major/Minor, TX Power или MAC-адресу рекламного устройства iBeacon, у них есть только доступ к произвольно сформированному UUID IOS. IOS использует MAC-адрес iBeacon в качестве своего уникального идентификатора для генерации случайного UUID, а не для широковещательного UUID iBeacon. При тестировании я несколько раз менял UUID iBeacon, и когда я передаю рекламный пакет, IOS по-прежнему читает его как тот же iBeacon. Но когда я изменяю MAC-адрес iBeacon, IOS воспринимает его как другой iBeacon. Случайный сгенерированный UUID IOS постоянно работает между приложениями, запущенными на устройстве IOS, до перезагрузки устройства.
Я использую слово «официальный», потому что, несмотря на то, кажется, я могу генерировать UUID с определенными функциями в библиотеке CoreBluetooth использованием UUIDWithString, UUIDWithData, UUIDWthNSUUID,
Я хотел бы, чтобы убедиться, что я создавая случайный UUID, который IOS будет регистрировать и правильно связываться с этим iBeacon.
Процесс IOS CoreBluetooth, который я пытаюсь выполнить сам, обычно запускается в первый раз, когда IOS получает определенную рекламу iBeacon. Мой план состоит в том, чтобы упредить это, чтобы первый раз, когда он получил пакет из этого iBeacon, устройство IOS уже имеет свой случайный UUID, сгенерированный и связанный с этим iBeacon. Мое приложение будет содержать список MAC-адресов для генерации этих случайных UUID.
Я не уверен, что понимаю, чего вы пытаетесь достичь. Вы не можете заставить iOS использовать данный UUID для периферии Bluetooth. Вы беспокоитесь о безопасности? Вам не нужно - периферийный UUID будет отличаться на каждом устройстве iOS, обнаружив маяк, поэтому нет возможности глобально идентифицировать маяк через периферийный UUID. – heypiotr
Я не столько забочусь о безопасности. Я хотел бы, чтобы мое приложение выполняло различные действия, в зависимости от того, из какого iBeacon он получает рекламный пакет. Прямо сейчас, и я не могу отправить какой-либо уникальный идентификатор из каждого iBeacon, который предоставляет мне CoreBluetooth. Я думал, что если каждое устройство IOS узнает, какие MAC-адреса iBeacon будут искать, я бы смог выполнить то, что мне нужно. Мне не нужно форсировать определенный UUID, мне просто нужно определить, какой iBeacon он обнаруживает. Любое другое направление также оценивается по этому поводу. –
Ах, понял. Да, вы не увидите идентификатор через Core Bluetooth, фильтры iOS. Вместо этого вы решили использовать Core Location? Альтернативно, используйте Eddystone-UID, этот доступен через Core Bluetooth. Большинство маяков от известных поставщиков могут быть переключены на трансляцию Eddystone вместо iBeacon, поэтому вам не нужно покупать новое оборудование. – heypiotr