baidu找到的答案,不知道是不是这个问题,我先试试看.
IOS移动端就针对我测试使用的手机(IPhone 5s,系统IOS 10.2.1),微信小程序调用低功耗蓝牙notifyBLECharacteristicValueChange总报错errCode: 10004问题; 以下原因时本人测试通过后推测的,至于是否是根本原因有待进一步层别排查,但对于该类问题有比较典型的查考意义;
(1)原因: 蓝牙时使用要让IPhone手机自己去发现服务列表,它才会认为有这样的一个服务,否则无法调用(既是使用者已经知道正确参数也不能直接调用notifyBLECharacteristicValueChange)
(2)个人的理解:
IPhone手机内置的蓝牙控制软件进行了对已有服务进行校验,如果在使用蓝牙服务的当时没有通过wx.getBLEDeviceServices获取设备服务列表,即使之前曾经使用过wx.getBLEDeviceServices获取过对该设备蓝牙操作所需要的所有设备特征例如deviceId, serviceId, notify特征的characteristicId等等,就算是这些数值都是正确的,都是无法通过手机本身的检验,所以才一直报错 : 没有找到指定服务(errCode: 10004);
这一点IPhone的的确确没有Android做得好,原来已经做过的事情还需要重新再做一遍,并且获得的参数对于同一个设备都是一样的,浪费了大量的资源做前面的准备;
(3)总结:
IPhone的蓝牙调用必须按套路打完,既是已经知道正确调用的参数和方法,也是不能跳过中间步骤;
Android的蓝牙调用只要按需取求即可,无需浪费多余资源重复相同工作;
如果希望兼容IOS和Android还是需要一整套套路打完(感觉好蠢)
2 个回复
DCloud_heavensoft
可以去微信社区查下这错误。也检查下微信有没有被授权蓝牙权限
XTiger (作者)
baidu找到的答案,不知道是不是这个问题,我先试试看.
IOS移动端就针对我测试使用的手机(IPhone 5s,系统IOS 10.2.1),微信小程序调用低功耗蓝牙notifyBLECharacteristicValueChange总报错errCode: 10004问题; 以下原因时本人测试通过后推测的,至于是否是根本原因有待进一步层别排查,但对于该类问题有比较典型的查考意义;
(1)原因: 蓝牙时使用要让IPhone手机自己去发现服务列表,它才会认为有这样的一个服务,否则无法调用(既是使用者已经知道正确参数也不能直接调用notifyBLECharacteristicValueChange)
(2)个人的理解:
IPhone手机内置的蓝牙控制软件进行了对已有服务进行校验,如果在使用蓝牙服务的当时没有通过wx.getBLEDeviceServices获取设备服务列表,即使之前曾经使用过wx.getBLEDeviceServices获取过对该设备蓝牙操作所需要的所有设备特征例如deviceId, serviceId, notify特征的characteristicId等等,就算是这些数值都是正确的,都是无法通过手机本身的检验,所以才一直报错 : 没有找到指定服务(errCode: 10004);
这一点IPhone的的确确没有Android做得好,原来已经做过的事情还需要重新再做一遍,并且获得的参数对于同一个设备都是一样的,浪费了大量的资源做前面的准备;
(3)总结:
IPhone的蓝牙调用必须按套路打完,既是已经知道正确调用的参数和方法,也是不能跳过中间步骤;
Android的蓝牙调用只要按需取求即可,无需浪费多余资源重复相同工作;
如果希望兼容IOS和Android还是需要一整套套路打完(感觉好蠢)