38

我知道我可以将 iOS 设备变成 iBeacon(iOS7 设备可以充当 iBeacon 吗?)。不幸的是,我只有一个设备,我的信标还没有到。所以我想知道如何将我的 MacBook Air(2011 年中,确实支持蓝牙 4.0)变成 iBeacon 以进行测试。是否有任何现成的应用程序可用,例如 iOS 的 airlocate?提前致谢!

4

7 回答 7

22

注意:这仅适用于 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,majorminorcalibrated 功率值并创建一个 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/上有一篇关于此的更详细的博客文章

于 2013-11-02T11:52:08.870 回答
13

到目前为止,我发现的最好的解决方案是 Tim Duckett 的解决方案:https ://github.com/timd/MactsAsBeacon

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

于 2013-11-19T22:17:55.427 回答
4

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

在 OSX Mountain Lion 中,与 iOS 6+ 不同,没有内置支持您需要像 iBeacon 一样宣传的蓝牙外围模式。这意味着滚动您自己的低级蓝牙代码,至少可以说这并不容易。

但是有一个针对旧操作系统的解决方案。我将我的 Mac 上的外部蓝牙加密狗与运行 Linux 的 VirtualBox VM 配对,并实现了您正在寻找的东西。我的公司在此处免费下载此 VM:http: //developer.radiusnetworks.com/ibeacon/

于 2013-10-17T02:34:17.457 回答
4

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

于 2013-12-02T14:30:08.437 回答
3

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

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

于 2014-04-05T04:50:56.923 回答
1

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

于 2013-11-19T03:47:01.940 回答
0

在 El Capitan (OS X 10.11) 下将 Mac 变成 iBeacon 的唯一实用程序是iBeaconSwiftOSX。还报告在 Yosemite (OS X 10.10) 下工作。使用的(免费)iOS 扫描实用程序是来自 Eurelis 的iBeacon Loc

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

于 2017-03-17T14:58:26.877 回答