测距后有啥方法可以使用核心蓝牙连接信标

Posted

技术标签:

【中文标题】测距后有啥方法可以使用核心蓝牙连接信标【英文标题】:Is there any way to connect beacon using Core Bluetooth after Ranging测距后有什么方法可以使用核心蓝牙连接信标 【发布时间】:2015-06-03 09:03:45 【问题描述】:

我正在我的应用程序中使用带有 UUID、Major 和 Minor 的 Core Location 进行信标测距。测距后,我需要使用 Core Bluetooth api 连接该信标。我在我的应用程序中使用了 estimote 信标。

【问题讨论】:

如何在连接到信标之前开始测距? 我同意@iAnurag 的观点。对于测距,您必须创建区域对象并开始监控。一旦开始监视,则只会调用委托方法。你想实现什么功能?? 我正在为测距创建 CLBeacon 区域。测距后,我需要使用 Core Bluetooth 连接该信标以修改其特性。 (感谢@iAnurag,@iAKST)。 您是否尝试修改 UUID,主要和次要? 我正在尝试修改他们的 UUID、Major、Minor 和 tx power of beacon。 @iAnurag 【参考方案1】:

ESTBeaconConnection 类正是您要寻找的。您可以使用 initWithBeacon 初始化程序并将您从范围中获得的 CLBeacon 对象传递给它:

let bc = ESTBeaconConnection(beacon: myBeacon,
                             delegate: self,
                             startImmediately: true)

这将启动连接过程。

委托应实现ESTBeaconConnectionDelegate 协议。成功建立连接后,您将收到对beaconConnectionDidSucceed 的呼叫,您可以开始向信标写入新设置:

func beaconConnectionDidSucceed(connection: ESTBeaconConnection!) 
    connection.writeMajor(123)  (newMajor, error) in
        if (error != nil) 
            println("successfully wrote the new major: \(newMajor)")
         else 
            println("didn't write the new major, error was \(error)")
        
        connection.disconnect()
    

实现beaconConnectionDidFailWithError 委托也是一个好主意——如果有什么事情发生了,你会知道的。

最后,由于您只能连接和更改自己的信标设置,因此您需要在尝试连接之前进行身份验证:

ESTCloudManager.setupAppID("appid", andAppToken: "app token")

您可以在https://cloud.estimote.com 上生成应用令牌。

【讨论】:

以上是关于测距后有啥方法可以使用核心蓝牙连接信标的主要内容,如果未能解决你的问题,请参考以下文章

在对iBeacons进行测距和监控之后,蓝牙设备无法连接,直到重置蓝牙

蓝牙测距原理

是否在相同的 BLE 扫描中收到信标监视和测距回调

BLE广告和信标

确定iOS 11中信标范围的蓝牙状态

信标测距与 BLE 扫描