Превратите Macbook в iBeacon
Я знаю, что могу превратить устройства iOS в iBeacon ( может ли устройство iOS7 выступать в качестве iBeacon?). К сожалению, у меня есть только одно устройство, и мои маяки еще не прибыли. Поэтому мне было интересно, как я могу превратить свой MacBook Air (середина 2011 года, поддерживает Bluetooth 4.0) в iBeacon для тестирования. Есть ли готовые приложения, такие как airlocate для iOS? Заранее спасибо!
7 ответов
Примечание: это работает только в Mavericks, это не работает в Yosemite.
У Mavericks нет поддержки iBeacon в Core Location, которая была добавлена в iOS 7. Однако теперь у Mavericks есть возможность выступать в качестве периферийного устройства BLE. Учитывая, что iBeacon является в основном периферийным устройством, должно быть (и действительно возможно) использование Mavericks в качестве iBeacon.
Чтобы создать iBeacon на iOS, сначала нужно создать CLBeaconRegion
объект, а затем использовать peripheralDataWithMeasuredPower:
способ получить NSDictionary
содержащие необходимые рекламные данные для трансляции. Если вы возьмете содержание этого NSDictionary
с устройства iOS и используйте его на Mavericks, тогда вы получите iBeacon.
Я создал класс, чтобы упростить это и позволить вам создавать словарь рекламных данных непосредственно на Mavericks. Исходный код доступен по адресу https://github.com/mttrb/BeaconOSX
BLCBeaconAdvertisementData
класс взять proximityUUID
, major
, minor
и откалиброванные значения мощности и создает NSDictionary, который может быть передан в startAdvertising:
метод CBPeripheralManager
на Маверикс.
BLCBeaconAdvertisementData
класс довольно прост. Основная работа выполняется следующим методом:
- (NSDictionary *)beaconAdvertisement {
NSString *beaconKey = @"kCBAdvDataAppleBeaconKey";
unsigned char advertisementBytes[21] = {0};
[self.proximityUUID getUUIDBytes:(unsigned char *)&advertisementBytes];
advertisementBytes[16] = (unsigned char)(self.major >> 8);
advertisementBytes[17] = (unsigned char)(self.major & 255);
advertisementBytes[18] = (unsigned char)(self.minor >> 8);
advertisementBytes[19] = (unsigned char)(self.minor & 255);
advertisementBytes[20] = self.measuredPower;
NSMutableData *advertisement = [NSMutableData dataWithBytes:advertisementBytes length:21];
return [NSDictionary dictionaryWithObject:advertisement forKey:beaconKey];
}
У меня есть более подробное сообщение в блоге об этом на http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/
Лучшее решение, которое я нашел до сих пор, это от Тим Дакетт: https://github.com/timd/MactsAsBeacon
Просто возьмите проект, настройте UUID, мажорные и минорные значения и нажмите Broadcast. Действительно просто. Решение основано на этом сообщении в блоге: http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/
Если вы хотите сэкономить 9,99€, взгляните на последнюю версию клиента с открытым исходным кодом от mttrb. Я добавил еще несколько графических интерфейсов, чтобы вы могли настроить все поля. https://github.com/deadfalkon/BeaconOSX/releases даже имеет бинарную загрузку.
Это возможно с OSX Mavericks, но не в Mountain Lion и более ранних версиях ОС. В моей компании Radius Networks есть приложение MacBeacon, которое делает это на Mavericks.
В OSX Mountain Lion, в отличие от iOS 6+, нет встроенной поддержки периферийного режима Bluetooth, который необходимо рекламировать как iBeacon. Это означает использование собственного низкоуровневого кода Bluetooth, что по меньшей мере нелегко.
Но есть решение для старых операционных систем. Я связал внешний ключ Bluetooth на своем Mac с виртуальной машиной VirtualBox под управлением Linux и достиг того, что вы ищете. Моя компания сделала эту ВМ доступной для бесплатного скачивания здесь: http://developer.radiusnetworks.com/ibeacon/
Я попробовал все эти решения, но не смог заставить AirLocate принять сигнал, пока я не выполнил это: https://github.com/lgaches/BeaconEmitter и начал передачу с этим UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 и с идентификатором: привет
Я также нашел этот пост о AirLocate полезным: AirLocate ищет только определенные UUID?
Единственной утилитой для превращения Mac в iBeacon, которая работала для меня под El Capitan (OS X 10.11), была iBeaconSwiftOSX. Также сообщается, что работает под управлением Yosemite (OS X 10.10). Использовалась (бесплатная) утилита сканирования iOS - iBeacon Loc от Eurelis.
К вашему сведению: на iOS сканер ДОЛЖЕН искать ОСОБЕННУЮ комбинацию UUID и мажор / минор, объявленную iBeacon. Убедитесь, что настройки сканера и настройки iBeacon совпадают.
Да, это возможно. Проверьте этот проект GitHub https://github.com/nolim1t/iBeaconAdvertisement