des*_*top 6 bluetooth ios core-bluetooth
我在iOS 8.3中看到一个奇怪的错误,我想知道是否有其他人看到了同样的事情.
我有一个iPad Air(在中央模式下)和一个iPhone 6(在外围模式下)非常接近.
CBCentralManager的初始化是使用串行后台队列和CBCentralManagerOptionRestoreIdentifierKey选项CBCentralManagerScanOptionAllowDuplicatesKey: true选项开始扫描外围设备centralManager:didDiscoverPeripheral:我内部检查已发现的外围设备列表:Run Code Online (Sandbox Code Playgroud)let connect: () -> () = { peripheral.delegate = self self.devices[peripheral.identifier.UUIDString] = peripheral self.manager.connectPeripheral(peripheral, options: nil) } if let device = devices[peripheral.identifier.UUIDString] { if device.peripheral.state == .Disconnected { connect() } } else if peripheral.state == .Disconnected { connect() }
现在外围设备在大约10秒后断开连接,立即再次发现并再次连接.10秒后,此程序重复进行.
这是一个错误还是我在这里做错了什么?
我也尝试直接订阅外围设备的特性,但这似乎没有改变任何东西.
这是一种预期的行为.蓝牙设计为消耗非常少的能量,因此它会尽快断开连接.此外,至少在iOS 7中,没有必要重新发现外围设备 - 您可以在断开连接后重新连接到已发现的设备.我非常确定iOS 8也是如此.如果您不需要永久连接,建议使用BLE的方法是:
如果您需要永久连接(例如,您需要实时获取有关心率的数据),您应该使用- setNotifyValue:forCharacteristic来订阅特征:
当您为特征值启用通知时,外围设备会调用外围设备:didUpdateNotificationStateForCharacteristic:error:其委托对象的方法,以便在特征值更改时通知您的应用.由于外围设备选择何时发送更新,因此只要通知或指示保持启用,您的应用就应该准备好处理它们.
| 归档时间: |
|
| 查看次数: |
2692 次 |
| 最近记录: |