objective-c - 蓝牙核心框架回调例程 peripheralManagerIsReadyToUpdateSubscribers : isn't called

标签 objective-c ios7 core-bluetooth bluetooth-lowenergy xcode5

我正在尝试弄清楚如何触发某些回调。 在外设上 peripheralManager:central:didSubscribeToCharacteristic: 被正确调用并且它发送一个数据 block (两个中的第一个)到中央接收它在 peripheral:didUpdateValueForCharacteristic:error: 正如预期的那样。

现在剩下一个 block 应该在外围设备的回调 peripheralManagerIsReadyToUpdateSubscribers: 中发送,根据 Apple's test application .

我已经过测试和验证,它在那里工作正常。这有点可疑,尽管根据文档,它只应该在外围管理器的 updateValue:forCharacteristic:onSubscribedCentrals: 失败时调用。

如何让外设发送剩余的 block ?我可以为您提供代码,但它几乎相同(我使用的是一组 NSData block ,而不是像示例中那样的一个大 NSData ) 对于我链接到的示例应用程序,我更好奇回调链是如何工作的,以及不同的选择器需要准备什么才能触发。

最佳答案

你做的是正常的操作方式。外设管理器根据当前设置处理数据发送和流量控制。例如。如果您使用指示而不是通知,则每次更新都必须得到接收方的确认,然后才能再次发送。

另一方面,通知类似于 UDP 数据包。他们可能会迷路。为确保数据无误地到达,您需要实现额外的控制流管理。

总而言之,你做对了。

关于objective-c - 蓝牙核心框架回调例程 peripheralManagerIsReadyToUpdateSubscribers : isn't called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18959384/

相关文章:

ios - 在 ScrollView 中缩放 UIImageView 的 UIbutton

objective-c - 更改 NSTableHeader 中的字体颜色

ios - 在 iOS 应用程序中存储和检索单条信息的合理、现代的方式

ios7 - 访问资源目录路径

ios - didUpdateValueForCharacteristic(setNotifyValue:YES)不起作用

delegates - HearthRateMonitor/BT101 Swift 示例 : discoverServices's delegate methods not called

ios - 如何修复 CBPeripheralManager 传输队列已满?

ios - 如何在自定义 UISlider 中在 slider 值 0 之前和 slider 值 100 之后提供填充

xcode - 停止 Xcode 5 创建配置文件?

objective-c - iOS如何识别按下了哪个图像(按钮)?