我目前正在开展一个项目,其中有一个与信标相关的部分,因为我看到并阅读了不同的文章和网站,不建议使用非ibeacon for ios来检测时间和背景检测的可访问性。我读了这篇文章: " Can we detect non-iBeacon beacons on iOS?" 所以基本上我们可以使用ibeacon协议唤醒我们的手机,然后使用我们的数据包,所以我的问题是,在唤醒我们的手机后,我们如何使用我们自制的协议连接到我们的相关应用程序?我们必须将CoreBluetooth用于我们自己的数据包吗?如果是,它在ios检测到甚至权限的速度方面有副作用吗?另一个问题是我们唤醒手机后可以向iOS发送多少字节?还有一定数量吗?或者我们可以扩展它?基本上,我们可以在第一个ibeacon数据包之后发送一个100KB的文件吗?
...谢谢
答案 0 :(得分:2)
在iOS上,有两种非常不同的API可用于检测类似信标的蓝牙LE设备,每种设备都有自己的优点:
CoreLocation
优点:
缺点:
<强> CoreBluetooth 强>
优点:
缺点:
您可以尝试通过组合这两种API来充分利用这两个方面。您可以通过使用两个不同的硬件信标(一个iBeacon,一个自定义)或一个发送两个硬件信标来实现此目的不同的广告类型。
这些技术的主要技巧是关联两个广告,因为iOS API彼此完全沙盒化,并且不能在它们之间共享标识符。我通常采用的方法是简单地使用iBeacon唤醒我的应用程序,然后让它开始扫描具有已知服务UUID 的单独蓝牙GATT服务(在前台或后台)。一旦找到这个,我连接到它并用它进行数据交换。使用这种技术,我不需要关联任何标识符。我只知道如果我看到一个具有特定ProximityUUID的信标,那么这意味着应该在附近做广告的蓝牙GATT服务,我可以用来进行数据交换。