1、缓存问题
iOS设备会对每台BLE设备进行缓存,记录设备名称,对应的服务与特征,但是如果进行DFU之后,修改了设备名称、或者服务特征,这样由于手机缓存了设备蓝牙信息,这样就无法第一时间获取DFU后的最新信息了。只能获取缓存的设备名称与服务特征。虽然可以系统设置里面手动清除蓝牙列表里面的缓存,但是这样还是不方便用户。
2、缓存问题解决方法
每次在DFU包,动态更新mac地址,这样对于手机来说,这个蓝牙外设就是新的蓝牙外设,这样就就不用从缓存里面获取了。因为iOS并无直接清除BLE缓存的接口,不像Android,可以通过反射机制达到清除缓存的目的。
3、mac地址问题
iOS中也同样无法直接获取蓝牙外设的mac地址,虽然iOS暴露了独一无二的设备UUID,但是无法满足需求,不同Android可以直接通过API获取,iOS获取mac地址比较麻烦,可以与蓝牙驱动工程师商议,在蓝牙的广播包里面放入mac地址信息。蓝牙的广播包,这里面会有一些设备的属性,比如设备的名字,服务等信息。但是这些信息不能任意修改,里面有一个可以自定义的key(kCBAdvDataManufacturerData)。
网友评论