首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监视CBPeripheral状态的变化

监视CBPeripheral状态的变化
EN

Stack Overflow用户
提问于 2017-04-05 19:09:17
回答 3查看 3.3K关注 0票数 9

因此,有一种通过CBCentralManager通过centralManagerDidUpdateState()监视状态变化的方法。但是,是否有类似的方法调用来监视CBPeripheral的状态更改?我在CoreBluetooth库中找不到公开的任何内容,每当CBPeripheralState发生变化时,我想调用一个函数。

现在我只有一个开关语句,它检查外围状态,但是它总是只返回连接或断开连接。我怎样才能找到连接/断开的情况?我尝试将开关语句放在代码的各个部分,从bleInit()方法到startScanning(), connectToPeripheral()等等。

代码语言:javascript
复制
switch(peripheral.state){
case .disconnected:
    print("disconnected")
case .connecting:
    print("connecting")
case .connected:
    print("connected")
case .disconnecting:
    print("disconnecting")
default: break
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-05 20:31:52

连接状态和断开状态是过渡状态。您的连接只会在这些状态中停留很短的时间,这就是为什么您将永远看不到这些状态。

如果您的应用程序充当中心,则通过CBCentralManagerdidConnectdidDisconnectPeripheral方法通知外围连接状态。

票数 6
EN

Stack Overflow用户

发布于 2018-11-23 15:45:15

CBPeripheralstate属性与KVO兼容,因此您可以轻松地添加一个对象作为观察者,并监视所有状态转换。

但请注意,由于某些原因,一些状态转换是奇怪的,即当外围设备从断开状态移动到断开时,没有任何中间状态。恐怕这是CoreBluetooth堆栈中的bug。

票数 2
EN

Stack Overflow用户

发布于 2017-04-05 19:24:52

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43239687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档