iOS刷新蓝牙特性

Posted

技术标签:

【中文标题】iOS刷新蓝牙特性【英文标题】:iOS refresh bluetooth characteristics 【发布时间】:2015-02-05 22:42:21 【问题描述】:

我创建了一个 ios 应用程序,它与一些自定义硬件/固件上的引导加载程序交互,以更新硬件上的应用程序。为了实现这一点,硬件/固件有一个引导加载程序应用程序和一个常规应用程序。首先,我将我的 iOS 应用程序连接到 bootloader 应用程序 并更新 常规应用程序。此时常规应用程序开始运行,我想用我的 iOS 应用程序连接到它。

如果我使用 android 应用程序搜索外围设备,它会正确地将我的硬件广播视为 bootloader 应用程序,然后切换到广播作为 常规更新完成后应用。但是,出于某种原因,等效的 iOS 应用程序仅将其作为 bootloader 应用程序 进行广播。我发现如果我重新启动 iOS 设备或关闭 iOS 设备的蓝牙并在几秒钟后重新打开,它最终会识别出 常规应用程序 正在广播.

iOS 设备似乎正在缓存外围设备信息。有谁知道是否有办法清除缓存或刷新以获取设备的当前/有效状态?

【问题讨论】:

【参考方案1】:

我在这里遇到了完全相同的问题,不幸的是这确实是由于 iOS 造成的。关于这个主题还有很多其他主题,但在寻找了一段时间后,我会推荐这个答案: https://***.com/a/25930825

祝你好运,我还没有完成,这并不容易......

【讨论】:

前几天我向 Apple 发送了一张票,他们给了我与您链接到我的答案相同的参考资料。不幸的是,如果我理解正确的话,似乎需要更改设备上的固件。 正确的做法确实是实现“Service Changed”特性。根据 BT 4.0 规范:“如果基于 GATT 的服务列表和服务定义在设备的生命周期内不能更改,则此特性不应存在,否则应存在此特性。” iOS 会自动缓存配对设备的属性表。

以上是关于iOS刷新蓝牙特性的主要内容,如果未能解决你的问题,请参考以下文章

iOS 上的蓝牙 LE 无法与许多服务和特性一起使用

iOS蓝牙总结

IOS 蓝牙 BLE 写入值返回“未知错误”

iOS蓝牙开发:蓝牙的连接和数据的读写

iOS Core 蓝牙串口

iOS中蓝牙与打印机连接使用