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刷新蓝牙特性的主要内容,如果未能解决你的问题,请参考以下文章