Как получить mac-адрес маяка в target-c, не зная его UUID, основных и второстепенных значений?

В моем приложении мне нужно найти ближайшие маяки и определить их mac-адреса, чтобы вычислить точное местоположение пользователя в здании. Вопрос в том, можем ли мы определить ближайший mac-адрес маяка из приложения iOS без UUID маяка, основных и второстепенных значений?


person ondermerol    schedule 31.12.2014    source источник


Ответы (3)


Подумайте об этом: если вы не знаете UUID маяка, как вы узнаете его местоположение? Маяк не знает, где он. Кто-то должен был физически разместить маяки на своих местах, должен был записать их местоположение и сделать это местоположение доступным для вашего приложения. В этом случае можно предположить, что они также записали UUID.

Идея Apple заключается в том, что вы не можете (легко) написать приложение, которое просто находит любой маяк. Маяки должны быть связаны с вашим приложением, иначе они вас не касаются. Допустим, вы пишете приложение для супермаркета, которое использует один и тот же UUID для всех маяков. Приложение должно игнорировать все остальные UUID.

person gnasher729    schedule 03.04.2015
comment
Спасибо за ответ. Он подробно объясняет архитектуру обнаружения маяков. - person ondermerol; 03.04.2015

Ты пробовал ?

- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region
{
     self.beaconsArray = beacons;

     ESTBeacon *beacon = [self.beaconsArray objectAtIndex:i];
     NSLog(@"beacon.macAddress = %@",beacon.macAddress);

}
person Krunal    schedule 31.12.2014
comment
Нет, не знаю, но спасибо за ответ. Должны ли мы использовать Estimote Beacon для использования EstimoteSDK или мы можем использовать для этого любой маяк? - person ondermerol; 31.12.2014
comment
С помощью EstimoteSDK вы можете найти любые маяки. - person Krunal; 02.01.2015

Общий протокол iBeacon, поддерживаемый Core Location, не раскрывает MAC-адрес маяка. Вам нужно знать UUID, настроенный в вашем маяке, и установить его в своем регионе маяка.

Другие маяки могут предоставлять дополнительную информацию в соответствии с другим ответом.

person Paulw11    schedule 31.12.2014
comment
Я новичок в технологии iBeacon, поэтому хочу задать вам еще один вопрос: Beacon использует технологию bluetooth, основанную на MAC-адресе, поэтому мы не можем получить этот MAC-адрес, принадлежащий маяку? (возможно, используя C++, другой язык программирования) - person ondermerol; 31.12.2014
comment
iBeacon использует BLE, но платформа Core Location не предоставляет MAC-адрес, а платформа Core Bluetooth фильтрует рекламные объявления iBeacon, поэтому они не доставляются методам делегата. Вероятно, вы можете получить MAC-адрес маяка на другой платформе, но не на iOS. Чтение MAC-адреса на самом деле не поможет вам, потому что вам нужно заранее узнать идентификатор ваших маяков, чтобы узнать, где они находятся, сославшись на какую-то базу данных. Вот почему вы используете UUID маяка. - person Paulw11; 31.12.2014
comment
Я так понял, что API CoreLocation и CoreBluetooth не позволяют нам видеть/идентифицировать маяки. Для этого нам нужно знать как минимум ProximityUUID. - person ondermerol; 02.01.2015
comment
Но с помощью CoreBluetooth я могу получить UUID, это то же самое, что и ProximityUUID маяка? Согласно исследованию на ссылка зарегистрированный UUID не имеет ничего общего с бесконтактным UUID маяка. Я проделал некоторую работу, но у нас нет UUID, основного, дополнительного и MAC-адреса маяков, которые у нас есть, мы получим их на следующей неделе, тогда будет более ясно. Спасибо за помощь. - person ondermerol; 02.01.2015
comment
Кроме того, в iOS 8 поведение сканирования Wi-Fi изменилось и теперь используются случайные локально администрируемые MAC-адреса. Влияет ли это на mac-адреса маяков? - person ondermerol; 02.01.2015
comment
UUID близости не связан с адресом Mac. Вы сами устанавливаете uuid близости. Адрес Bluetooth устройства iOS будет периодически меняться для устройств, с которыми оно не связано или не подключено. Для iBeacons я не понимаю, зачем вам нужен MAC-адрес - UUID близости - это значение, которое вы должны использовать - person Paulw11; 02.01.2015
comment
Компания, которая дает нам маяки, предоставила их mac-адреса только для того, чтобы помочь нам их идентифицировать. Но они неверны, согласно вашему объяснению, мы не можем идентифицировать маяки только с MAC-адресами (на самом деле мы не можем получить Mac-адрес без UUID близости.) - person ondermerol; 02.01.2015
comment
Обычно маяки поставляются с приложением, которое позволяет вам настраивать closeuuid, основные и второстепенные значения в соответствии с вашими требованиями — или, если они используют фиксированный ProximityUUID, вы все равно можете настроить основные и второстепенные значения. Вы должны иметь возможность настраивать эти значения, поскольку обычно вы регистрируете один регион маяка на основе UUID и идентифицируете конкретный маяк по основному/второстепенному. Это связано с тем, что существует ограничение на количество областей маяков, которые вы можете отслеживать одновременно. - person Paulw11; 03.01.2015
comment
Спасибо, мы решили проблему. Теперь мы можем обнаруживать маяки с их рекламными данными (UUID, основные и второстепенные значения). Я хочу отметить, что свойство точности класса CLBeacon не дает правильного расстояния и меняется каждый раз, если только местоположение пользователя не остается прежним (маяки RSSI, мощность сигнала нестабильна). В результате оценка местоположения пользователя с помощью маяков очень сложна. - person ondermerol; 23.01.2015