iOS蓝牙开发中的问题

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

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

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

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

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

The connection has timed out unexpectedly

看苹果官网上的苹果硬件参数文档
把这个给硬件工程师看,他们的代码里有 max interval 和min interval 的设置,他们修改后重新给你烧个固件就可以了, 另外如果设备间通信过于频繁,也做一些容错处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值