收藏
回答

蓝牙数据传输 ios小程序闪退、安卓手机只能发送两包数据

通过低功耗蓝牙,把168k的数据,从手机端发送给我们的设备,成功连接设备之后,第一次发送64个字节,收到设备的回应后,接着发送512个字节,再收到回应后,发送下一个512个字节,直至发完所有数据。


蓝牙数据写入那里已经做好了分包处理,每个包20个字节,且每次间隔25ms再发下一包。


结果发现小程序在ios手机上发完几十个(512个字节)包之后会莫名发生闪退,有时候能发 30 X 512个字节,有时候能发 100、200 X 512 个字节,有时候只能发 十几个包 就会闪退,也就是说发送数据量、以及闪退的位置是随机的,完全搞不明白是怎么回事?试过iphone5S、iphone6P、iphone6s等都有发生闪退的情况。


而Android手机上,发完64个字节,再发1024个字节,就会莫名停止。也是搞不懂发生了什么问题,没有报错,没有异常。


求高人指点

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

3 个回答

  • goodbye happiness
    goodbye happiness
    08-14

    老哥ios微信小程序怎么协商MTU的?我这边只能20字节20字节发送,速度实在有点慢

    08-14
    有用
    回复
  • 木了@一亮
    木了@一亮
    2018-11-22

    是的,是整个微信崩溃,有时候崩溃次数多了,微信还会提示清缓存、重新登录。

    我看到有人也遇到同样的问题,调用wx.writeBLECharacteristicValue写入超过40000+个byte就会崩溃。

    我也这么TEST了一下,果然是:buffer定义为4个字节,如:10101010,是不是wx.writeBLECharacteristicValue

    写入的数据量有限制?


    for (let i = 0;i < 10000; ++i) {

        wx.writeBLECharacteristicValue({

            deviceId: xxxxx,

            serviceId: xxxxx,

            characteristicId: xxxxx,

            value: buffer

        })

    }


    2018-11-22
    有用
    回复 1
    • Beyond
      Beyond
      2022-10-27
      应该是不能这样连续写入,得在每次的写入成功回调里继续调用写入吧?
      2022-10-27
      回复
  • 王翊夫if
    王翊夫if
    2018-11-22

    Hi, iOS 微信闪退是整个微信崩溃么? Android 莫名停止是什么表现,也帮忙打多点日志定位下是停在什么地方。


    2018-11-22
    有用
    回复 2
    • 木了@一亮
      木了@一亮
      2018-12-03

      问题应该很容易复现的,请问哪位大神能来解答一下呢?好捉急呀

      2018-12-03
      回复
    • 匿名
      匿名
      2019-07-24
      我这里也遇到了,微信无响应崩溃,传输包数过多就会出现,ios可以发长字节要好一点,android包数较多,稍大点文件微信就卡住闪退了
      2019-07-24
      回复
登录 后发表内容