同样的逻辑代码,在设备connect之后,调用wx.getBLEDeviceServices()接口,ios端上只能返回3条service uuid信息,android端上可以返回全部5条service uuid信息。 使用官方的代码片段只是添加了打印信息,在wx.getBLEDeviceServices()中也是只能打印出3条service 的uuid。是ios端上丢失了service 的uuid吗?还是可以怎么设置,让ios也接收全部5个service uuid?。在论坛上好像发现也有人出现这个情况,https://developers.weixin.qq.com/community/develop/doc/00086af5978e886b03cac99ca5e400 这么久了,没有解决方案吗?别说写死uuid进行读写,ios端需要先进行一次getBLEDeviceServices 和一次 getBLEDeviceCharacteristics 而且是要找到需要用的uud ,下面的读写操作才能正常运行。写死是不管用的,直接会报10004 no service。我也不提供代码,官方的demo直接加打印就看到了。
没想道21年的问题 24年的我还深受其害啊,依旧迷茫中
解决了吗兄弟
我遇到过你这个问题,时间比较久解决办法有点忘了,你可以自己去看下,https://github.com/arsize/ble,大概是用promise按次数嗅探,达到次数之后再停止,这个问题的出现的确和延时有关,但是单纯用延时函数好像没什么作用。另外你上面说的uuid写死没用,其实也不对,如果你们和硬件是1对1的确认关系,是可以写死的,省了中间嗅探的步骤速度会加快不少,我就是写死的,线上已经运行一年了没什么问题。
这里设备的service是否是在连接上之后有更新?如果是的话是已知问题,建议先延时个5s后重新调用一下getBLEDeviceServices来规避,未来会加一个service更新事件通知service更新时机