将Macbook变成iBeacon

时间:2013-10-16 17:54:32

标签: macos bluetooth-lowenergy ibeacon

我知道我可以将iOS设备转换为iBeacons(Can an iOS7 device act as an iBeacon?)。不幸的是,我只有一台设备而且我的信标尚未到达。所以我想知道如何将我的MacBook Air(2011年中期,支持蓝牙4.0)转换为iBeacon用于测试目的。是否有现成的应用程序,如iOS的airlocate?提前谢谢!

7 个答案:

答案 0 :(得分:22)

注意:这仅适用于小牛队,但在优胜美地不起作用。

Mavericks并没有在iOS 7中添加核心位置的iBeacon支持。但是,Mavericks现在可以充当BLE外围设备。鉴于iBeacon基本上是一个外设,它应该(实际上)可以使用Mavericks作为iBeacon。

要在iOS上创建iBeacon,首先要创建一个CLBeaconRegion对象,然后使用peripheralDataWithMeasuredPower:方法获取包含要广播的必要广告数据的NSDictionary。如果您从iOS设备获取此NSDictionary的内容并在Mavericks上使用它,那么您将获得iBeacon。

我创建了一个类来使这更容易,并允许您直接在Mavericks上生成广告数据字典。源代码位于https://github.com/mttrb/BeaconOSX

BLCBeaconAdvertisementData班级获取proximityUUIDmajorminor和校准的功效值,并创建一个可以传递给startAdvertising:方法的NSDictionary小牛队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/

上有一篇更详细的博客文章

答案 1 :(得分:12)

到目前为止,我发现的最佳解决方案是蒂姆·达克特的这个问题:https://github.com/timd/MactsAsBeacon

抓住项目,设置UUID,主要和次要值,然后单击“广播”。真的很简单。该解决方案基于以下博文:http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/

答案 2 :(得分:4)

这可以通过OSX Mavericks实现,但不适用于Mountain Lion和早期版本的操作系统。我的公司Radius Networks有一个MacBeacon应用程序可以在Mavericks上执行此操作。

在OSX Mountain Lion中,与iOS 6+不同,没有内置支持蓝牙外围设备模式,您需要像iBeacon一样进行广告宣传。这意味着滚动你自己的低级蓝牙代码,这是不容易说的。

但是有一个适用于旧操作系统的解决方案。我将Mac上的外部蓝牙适配器与运行Linux的VirtualBox VM配对,实现了您的目标。我的公司在这里免费下载了这个虚拟机:http://developer.radiusnetworks.com/ibeacon/

答案 3 :(得分:4)

如果您想保存9.99€,请查看mttrb的最新版本的开源客户端。我添加了一些GUI,以便您可以调整所有字段。 https://github.com/deadfalkon/BeaconOSX/releases甚至还有二进制下载。

答案 4 :(得分:3)

我尝试了所有这些解决方案,但在我遵守此规定之前无法让AirLocate接收信号: https://github.com/lgaches/BeaconEmitter 并开始使用此UUID进行传输: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 并且标识符为: 喂

我发现这篇关于AirLocate的帖子也很有用: Does AirLocate only look for particular UUIDs?

答案 5 :(得分:0)

是的,可能。看看这个github项目https://github.com/nolim1t/iBeaconAdvertisement

答案 6 :(得分:0)

将Mac转变为在El Capitan(OS X 10.11)下为我工作的iBeacon的唯一工具是iBeaconSwiftOSX。据报道也在Yosemite(OS X 10.10)下工作。使用的(免费)iOS扫描实用程序是来自Eurelis的iBeacon Loc

仅供参考:在iOS上,扫描仪必须搜索iBeacon广告的UUID和主要/次要的特定组合。确保扫描仪设置和iBeacon设置匹配。