我知道我可以将 iOS 设备变成 iBeacon(iOS7 设备可以充当 iBeacon 吗?)。不幸的是,我只有一个设备,我的信标还没有到。所以我想知道如何将我的 MacBook Air(2011 年中,确实支持蓝牙 4.0)变成 iBeacon 以进行测试。是否有任何现成的应用程序可用,例如 iOS 的 airlocate?提前致谢!
7 回答
注意:这仅适用于 Mavericks,不适用于 Yosemite。
Mavericks 在 Core Location 中没有添加到 iOS 7 的 iBeacon 支持。但是,Mavericks 现在可以充当 BLE 外围设备。鉴于 iBeacon 基本上是一个外围设备,它应该(并且确实是)可以将 Mavericks 用作 iBeacon。
为了在 iOS 上创建 iBeacon,您首先创建一个CLBeaconRegion
对象,然后使用该peripheralDataWithMeasuredPower:
方法获取NSDictionary
包含广播所需的广告数据。如果你NSDictionary
从 iOS 设备上获取它的内容并在 Mavericks 上使用它,那么你会得到一个 iBeacon。
我创建了一个类来简化此操作,并允许您直接在 Mavericks 上生成广告数据字典。源代码位于https://github.com/mttrb/BeaconOSX
该类BLCBeaconAdvertisementData
采用proximityUUID
,major
和minor
calibrated 功率值并创建一个 NSDictionary ,该 NSDictionary 可以传递给on Mavericks的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/上有一篇关于此的更详细的博客文章
到目前为止,我发现的最好的解决方案是 Tim Duckett 的解决方案:https ://github.com/timd/MactsAsBeacon
只需抓取项目,设置 UUID、主要和次要值,然后单击广播。真的很简单。该解决方案基于此博客文章: http: //www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/
这在 OSX Mavericks 中是可能的,但在 Mountain Lion 和早期版本的操作系统中是不可能的。我的公司 Radius Networks 有一个MacBeacon应用程序可以在 Mavericks 上执行此操作。
在 OSX Mountain Lion 中,与 iOS 6+ 不同,没有内置支持您需要像 iBeacon 一样宣传的蓝牙外围模式。这意味着滚动您自己的低级蓝牙代码,至少可以说这并不容易。
但是有一个针对旧操作系统的解决方案。我将我的 Mac 上的外部蓝牙加密狗与运行 Linux 的 VirtualBox VM 配对,并实现了您正在寻找的东西。我的公司在此处免费下载此 VM:http: //developer.radiusnetworks.com/ibeacon/
如果您想节省 9.99 欧元,请查看 mttrb 开源客户端的最新版本。我添加了更多的 GUI,以便您可以调整所有字段。https://github.com/deadfalkon/BeaconOSX/releases甚至有二进制下载。
我尝试了所有这些解决方案,但在我遵守以下要求之前无法让 AirLocate 接收信号: https ://github.com/lgaches/BeaconEmitter 并开始使用此 UUID 进行传输:E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 和标识符为:你好
我发现这篇关于 AirLocate 的帖子也很有用: Does AirLocate only look for specific UUIDs?
是的,有可能。查看这个 github 项目 https://github.com/nolim1t/iBeaconAdvertisement
在 El Capitan (OS X 10.11) 下将 Mac 变成 iBeacon 的唯一实用程序是iBeaconSwiftOSX。还报告在 Yosemite (OS X 10.10) 下工作。使用的(免费)iOS 扫描实用程序是来自 Eurelis 的iBeacon Loc。
仅供参考:在 iOS 上,扫描仪必须搜索由 iBeacon 广告的 UUID 和主要/次要的特定组合。确保扫描仪设置和 iBeacon 设置匹配。