iOS蓝牙开发中的问题

iOS 设备蓝牙名称和广播里的kCBAdvDataLocalName字段不一致的问题

这个问题只在iOS设备上才会出现,设备名称的缓存问题。
android手机上是一致的且与iOS设备上的kCBAdvDataLocalName字段一致,当出现不同时蓝牙调试app搜索的时候显示的是广播里的kCBAdvDataLocalName,但iphone设置里的蓝牙显示的是蓝牙名。
这里是关于蓝牙名称的官方描述
在这里插入图片描述

蓝牙设置了修改通道,连接过一次蓝牙后,修改的设备名称会变。

iOS蓝牙广播中可以获取的字段

字段名 对应字符串 含义 广播Type 描述
CBAdvertisementDataLocalNameKey kCBAdvDataLocalName 对应的值是一个字符串,描述外设的名称 0x09 Complete local name
CBAdvertisementDataManufacturerDataKey kCBAdvDataManufacturerData 对应的值是一个NSData对象,包含外设的产生的数据 0xFF Manufacturer Specific Data: first 2 octets contain the Company Identifier Code followed by the additional manufacturer specific data
CBAdvertisementDataServiceDataKey kCBAdvDataServiceData 包含特定服务的分发数据,该字典的key为代表着该服务的CBUUID对象.值为NSData对象 0x06 Service: More 128-bit UUIDs available
CBAdvertisementDataServiceUUIDsKey kCBAdvDataServiceUUIDs 需要公布的服务的UUID数组 0x07 Service: Complete list of 128-bit UUIDs
CBAdvertisementDataOverflowServiceUUIDsKey kCBAdvDataHashedServiceUUIDs 代表着在公布数据的"overflow"区域能够被发现的服务的UUID的数组,因为存储在这个UUID列表是最大努力的 并且不总是精确的.如果设备资源不足这些属性可能不会被公布. 0x15 Service Solicitation: list of 128-bit Service UUIDs
CBAdvertisementDataTxPowerLevelKey kCBAdvDataTxPowerLevel 一个包含外设发射功率NSNumber的数字,如果外设在广播的数据包中,提供了他的Tx功率级别时候,这个属性是可用的. 使用这个RSSI 值和电台功率,计算出路径损耗是有可能. 0x0A TX Power Level: -127 to +127 dBm
CBAdvertisementDataIsConnectable kCBAdvDataIsConnectable 一个布尔值,标示公布事件类型是否为可连接的,对应这个Key是一个 NSNumber对象,你可用使用这个值来检查一个外设当前是否为连接状态
CBAdvertisementDataSolicitedServiceUUIDsKey kCBAdvDataSolicitedServiceUUIDs 一个代表着一个或多个服务的UUID

猜你喜欢

转载自blog.csdn.net/guoxulieying/article/details/133316627