收藏
回答

BLEPeripheralServer.startAdvertising,会多条广播包一直发送

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug BLEPeripheralServer.startAdvertising(Object Object) 微信安卓客户端 7.0.19 2.13.2

手机:小米6 Android9

两个问题需要反馈。

以代码片段举例,先打开手机蓝牙,然后匀速左右滑动进度条大概持续10S。然后拿另一个手机打开nrf connect这个广播包抓包工具,用BBAA过滤广播数据,搜索广播包。

问题一:每次我发包都是在停止上一次广播成功的回调中进行,结果控制台还是有打印提示发包失败,已经开始发包了(截图1)。

问题二:当你停止滑动后,增加过滤条件,重新搜索广播包,在nrf connect中应该只有一条广播包,结果测试发现有时候居然同时有4条广播数据一直被接收(截图二),当你退出小程序后也会有三条广播包一直在发送,只有重启手机才会停止发送。

综上所述,问题二是很严重的问题,因为在某些产品中,每一个广播包都相当于一个命令,当有问题二存在时,产品就会一直执行这些不同的命令,直到用户重启手机。

回答关注问题邀请回答
收藏

1 个回答

  • Cjiang
    Cjiang
    2020-10-27

    你好,麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点(具体到分钟)。

    2020-10-27
    有用
    回复 11
    • 贪欢
      贪欢
      2020-10-28
      已上传。微信号:hzjns2n8z2jsqnxizma    上传时间:10/28 10:26
      2020-10-28
      回复
    • Cjiang
      Cjiang
      2020-10-28回复贪欢
      1. 只要stop的参数无误,我们就会调用js的success,但实际上stop在系统层面是异步接口,调用success不代表就已经stop了。这里只能自己加个时延
      2. 小程序实例被销毁后会停止广播,看日志也确实是停止了。
      2020-10-28
      回复
    • 贪欢
      贪欢
      2020-10-28回复Cjiang
      你好,第一点明白了。但是关于第二点,在实际测试中确实是有问题的。发射端的手机我将后台应用全部清空(截图1),但是在另一个手机依旧可以一直收到广播包,如截图二所示,同时有两条广播包一直可以接收。可以确定的是这两条数据不是其它手机发的,当我发射端手机重启后,另一个手机就收不到了。你们可以尝试复现一下。
      2020-10-28
      回复
    • 贪欢
      贪欢
      2020-10-30回复Cjiang
      你好,现在是什么状况了,贵司是认为目前的回答已经解决这个问题了吗?
      2020-10-30
      回复
    • Cjiang
      Cjiang
      2020-11-03回复贪欢
      代码有时序问题,改了下
      ,isPostAdvertising变量保证startAdvertising回调后再进行后续的操作
      https://paste.ubuntu.com/p/snfmjHhNW7/,自行查看。
      2020-11-03
      回复
    查看更多(6)
登录 后发表内容
问题标签