nRF52 服务发现不会在 iOS 上发生

问题描述

我在发现服务时遇到了一些问题。

似乎连接到 Android 没有太大问题,但在 iOS 上连接失败。从运行测试连接来看,似乎没有发现服务。在示例或文档中,我没有在连接上看到有关此问题服务发现的任何信息。 这是因为 gatt 服务的开发者给了我一个新服务的更新,所以我必须将 ipad 置于飞行模式,是否有针对此问题的编程解决方案?

大家有什么建议吗?

解决方法

听起来您在发现新添加的 BLE 服务时遇到了问题。这很可能是由 iOS 缓存您的设备信息引起的。为此,您应该使用服务更改特性。

根据 Bluetooth Core specification,Version 5.2,Vol. 3,Part G,7 DEFINED GENERIC ATTRIBUTE PROFILE SERVICE 服务改变的特性是

如果可以添加、更改或删除服务器上的服务定义,则为必填项;否则可选

来自 Apple 的 Accessory Design Guide 还指出:

仅当附件具有能力时,附件才应实现服务更改特性 在其生命周期内更改其服务。 设备可以使用 Service Changed 特性来确定它是否可以依赖先前读取的 (缓存)来自设备的信息。请参阅蓝牙 4.0 规范,第 3 卷,G 部分,部分 7.1.