Включите Macbook в iBeacon

Я знаю, что я могу превратить iOS-устройства в iBeacons (Может ли устройство iOS7 действовать как iBeacon?). К сожалению, у меня только одно устройство, и мои маяки еще не появились. Поэтому мне было интересно, как я могу превратить MacBook Air (середина 2011 года, поддерживает Bluetooth 4.0) в iBeacon для тестирования. Существуют ли готовые приложения, такие как airlocate для iOS? Спасибо заранее!

Ответ 1

Примечание. Это работает только в 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 на Mavericks.

Класс 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/

Ответ 2

Лучшее решение, которое я нашел до сих пор, - это один из Тима Дакетта: https://github.com/timd/MactsAsBeacon

Просто возьмите проект, настройте UUID, основное и второстепенное значение и нажмите "Трансляция". На самом деле просто. Решение основано на этом сообщении в блоге: http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/

Ответ 3

Это возможно с OSX Mavericks, но не в Mountain Lion и более ранних версиях ОС. Моя компания Radius Networks имеет MacBeacon приложение, которое делает это на Mavericks.

В OSX Mountain Lion, в отличие от iOS 6+, нет встроенной поддержки периферийного режима Bluetooth, которую вы должны рекламировать как iBeacon. Это означает, что вы переводите свой низкоуровневый код Bluetooth, что нелегко сказать.

Но есть решение для более старых операционных систем. Я соединил внешний Bluetooth-ключ на своем Mac с виртуальной виртуальной машиной VM под управлением Linux и добился того, что вы ищете. Моя компания сделала эту виртуальную машину доступной для бесплатной загрузки здесь: http://developer.radiusnetworks.com/ibeacon/

Ответ 4

Если вы хотите сохранить 9.99 €, посмотрите последнюю версию клиента с открытым исходным кодом на mttrb. Я добавил еще несколько графических интерфейсов, чтобы вы могли настроить все поля. https://github.com/deadfalkon/BeaconOSX/releases даже имеет двоичную загрузку.

Ответ 5

Я пробовал все эти решения, но не смог заставить AirLocate подобрать сигнал, пока не выполнил следующее: https://github.com/lgaches/BeaconEmitter и начал передачу с помощью этого UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 и с идентификатором: привет

Я тоже нашел этот пост о AirLocate: Возможен ли AirLocate только для определенных UUID?

Ответ 7

Единственная утилита для превращения Mac в iBeacon, которая работала для меня в El Capitan (OS X 10.11), была iBeaconSwiftOSX. Также сообщалось о работе под управлением Йосемити (OS X 10.10). Утилита сканирования (бесплатно) iOS была iBeacon Loc от Eurelis.

FYI: на iOS, сканер ДОЛЖЕН искать СПЕЦИФИЧЕСКУЮ комбинацию UUID и основного/младшего, рекламируемого iBeacon. Убедитесь, что настройка сканера и настройка iBeacon совпадают.