Превратите 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

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