0

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

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

有没有人有什么建议?

4

2 回答 2

0

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

根据蓝牙核心规范,版本 5.2,卷。3, Part G, 7 DEFINED GENERIC ATTRIBUTE PROFILE SERVICE 服务改变的特征是

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

Apple的配件设计指南还指出:

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

于 2021-03-17T05:58:57.567 回答
0

很多天后,我找到了解决方案,您应该像这样发现您的外围设备,

print("peripheral peripheral.name \(advertisementData)")
guard let nameAdvertisementData = advertisementData["kCBAdvDataLocalName"] as? String else {
        return
    }
于 2021-09-01T14:08:58.700 回答