CBPeripheralManager startAdvertising 在 OS X yosemite 上不起作用

Posted

技术标签:

【中文标题】CBPeripheralManager startAdvertising 在 OS X yosemite 上不起作用【英文标题】:CBPeripheralManager startAdvertising not working on OS X yosemite 【发布时间】:2014-08-25 18:37:06 【问题描述】:

在将您的 mac(运行 OS X 10.10 yosemite DP 6)用作 iBeacon 时,是否有人注意到任何问题?我尝试了几种工具,并且我自己也开发了它(使用 CBPeripheralManager startAdvertising),但没有任何运气。

在运行 OS X 10.9 Mavericks 的 Mac 上运行这些应用程序(+我自己开发的代码)时,它就像一个魅力。

OS X 10.10 yosemite 是否有任何特定要求或者这是一个错误?

感谢任何帮助!

【问题讨论】:

【参考方案1】:

编辑: Radius Networks 已确认此问题已出现在 Yosemite 的后续预发布版本中。此操作系统版本阻止使用内部接口发送 iBeacon 传输,但允许使用外部接口发送。因此,您可以添加一个外部蓝牙加密狗(如 GBU521)并再次传输。

这一定是代码中的错误或特定于您的机器的问题。我们已经在 Yosemite 上测试了我们的MacBeacon OSX app,没有发现任何问题。

【讨论】:

"最近对 OS X 10.10 Yosemite 的更改阻止了 MacBeacon 软件的正常运行。我们很遗憾无法让您访问该软件的功能,并且正在继续探索启用 OS X 操作的选项10.10 优胜美地用户。”从链接... CBPeripheralManager startAdvertising 在优胜美地工作。 虽然 CBPeripheralManager startAdvertising 在 Yosemite 上通常可以正常工作,但它无法成功传输 iBeacon 布局所需的字节序列。 如果像GBU521这样外接加密狗,Yosemite会成功发送iBeacon传输。它只是不适用于内部接口。 已确认,我忘了提到在我的测试中我是使用外部蓝牙 4.0 (USB) 进行的。谢谢大卫。【参考方案2】:

事实上,您确实可以将运行 Yosemite 的 Mac 宣传为带有外部兼容蓝牙 4.0 (USB) 的 iBeacon。 我用 Swift 为 Yosemite 写了一个简单的 iBeacon 发射器,看这里https://updatemycode.com/2014/11/29/yosemite-as-an-ibeacon-swift/。

【讨论】:

我可以确认这一点。我正在使用可插入的 bt4le 加密狗。结果不像小牛队那样可靠,但确实有效。 @mgigirey 你用的是哪种加密狗? 我拥有一个 GMYLE 蓝牙 4.0 适配器。在上面的链接中,我在最后添加了一个推荐蓝牙加密狗的部分。【参考方案3】:

这似乎是 Yosemite 10.10 的问题。这在radius网络网站上得到了承认:http://www.radiusnetworks.com/ibeacon/macbeacon/

由于这个问题,我不得不购买可以轻松打开和关闭以进行测试的 USB 信标。

【讨论】:

正确。此问题出现在 Yosemite 的后续预发布版本中。我们已向 Apple 报告此问题,但尚不清楚是否或何时会提供修复。 @davidgyoung 你有openRdar ID吗? 该错误在 bugreport.apple.com 上不公开可见,但在问题 ID 18468983“无法广播 BLE 外围设备”中提交 如果需要,请将其复制到openradar.appspot.com,然后我们可以简单地归档副本以提高知名度。 在 Yosemite 10.10 中)这不是问题。我可以确认 CBPeripheralManager startAdvertising 正在工作。【参考方案4】:

我没有使用 10.10 对此进行测试,但我可以使用 10.11.3 作为信标进行广告宣传(至少对于来自 @mgigirey 的项目)。也许苹果又打开了这个?

【讨论】:

以上是关于CBPeripheralManager startAdvertising 在 OS X yosemite 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

获取 CBPeripheralManager 订阅的 Centrals

为啥我的 CBPeripheralManager 有广告但无法被发现?

CBPeripheralManager 延迟停止广告/位置管理器范围停止 iBeacon

CBPeripheralManager AddService 上的 iOS 崩溃断言失败:

CBPeripheralManager startAdvertising 在 OS X yosemite 上不起作用

ios设备app作为蓝牙外设端