Closed edwardair closed 5 years ago
iOS蓝牙类型是自动判断的
我就是用 -1 判断的,还是说, -1 都不需要传?
你用的是 ios 手机,type 只对 android 有影响。
恩 我看到说明也是对android影响,目前是接口报错,跟手机平台不相关啊,传不传-1都是一样报错
只在iOS 上报错吗?
安卓测试后,无任何回调,也抓不到error,猜测是不是安卓上另外弹出了那个很多错误信息的页面,影响了回调?
iOS上会返回error
测试了下android,报错很多错误:
11-23 13:00:53.474 30833 31580 E ReactNativeJS: java.lang.RuntimeException: Cannot add a child that doesn't have a YogaNode to a parent without a measure function! (Trying to add a 'ReactRawTextShadowNode' to a 'LayoutShadowNode') 11-23 13:00:53.474 30833 31580 E ReactNativeJS: at com.facebook.react.uimanager.ReactShadowNodeImpl.addChildAt(ReactShadowNodeImpl.java:199) 11-23 13:00:53.474 30833 31580 E ReactNativeJS: at com.facebook.react.uimanager.ReactShadowNodeImpl.addChildAt(ReactShadowNodeImpl.java:54) 11-23 13:00:53.474 30833 31580 E ReactNativeJS: at com.facebook.react.uimanager.UIImplementation.setChildren(UIImplementation.java:482) 11-23 13:00:53.474 30833 31580 E ReactNativeJS: at com.facebook.react.uimanager.UIManagerModule.setChildren(UIManagerModule.java:439)
不过可以将这些报错页面返回,直到底层能看到真正的插件页面,尝试了 DEMO的代码,bt.connect(-1) ,收不到任何返回,错误信息也没回调,iOS上至少还有错误返回 @pencilCool
android 上的这个是界面有问题,connect 的,你过滤一下 log "connect " 看看有没有
我们蓝牙是非小米蓝牙协议设备,并且是弱绑定
安卓上,按如下步骤调试,发现这样的问题:
第一次进入插件,Bluetooth.checkBluetoothIsEnabled 能够接收回调
然后底层是插件页面,上层会弹出好几个11-23 13:00:53.474 30833 31580 E ReactNativeJS: java.lang.RuntimeException: Cannot add a child that doesn't have a YogaNode to a parent without a measure function! (Trying to add a 'ReactRawTextShadowNode' to a 'LayoutShadowNode')此类的错误信息页面
之后bluetooth.connect无法接收任何回调
尝试按系统返回键,直到返回到真实的插件页面
此时,可以reload页面
打印 Bluetooth.checkBluetoothIsEnabled 回调,此时同样无法接收回调信息
步骤2的报错,是由于什么引起的,是 render 里的报错,后面的3应该都没有执行到,不可能没有回调的。 建议你把所有页面相关的 setState的逻辑先去掉,console.log 输出蓝牙相关的,以免影响问题定位。 你可以直接调用 bluetooth.connect 如果蓝牙checkBluetoothIsEnabled=false,会在回调里报错
步骤2怎么引起我也不清楚,试过直接render一个空的view同样会报错,MIX2、MIUI10.0稳定版 步骤3肯定是执行到代码的,代码本身跟步骤1的代码是在同一个函数中,调用前后我有日志打印信息, 仔细看步骤5、6,当出现步骤2的错误后,reload插件页面,打印过,步骤1所在的代码是执行的,但之后无法接收回调,我只能猜测,是因为步骤2弹出的错误页面,影响了回调,或者影响了插件导致插件的“对象”都释放了? @dingshaoran 换了个手机,有个错误信息:
以上错误发现是在android平台(iOS无问题)
export default class App extends React.Component { render() { return <RootStack/> } }
@pencilCool @dingshaoran @kyou @kangkai
并且尝试使用View包含 RootStack同样报错。请问你们android上这样用没有问题么?
bluetooth.connect(-1) 最新测试情况: android:能够回调成功,成功信息如下:
{"key_version":"1.0.1_1","services":[{"chars":["00002a00-0000-1000-8000-00805f9b34fb","00002a01-0000-1000-8000-00805f9b34fb","00002a02-0000-1000-8000-00805f9b34fb","00002a04-0000-1000-8000-00805f9b34fb"],"uuid":"00001800-0000-1000-8000-00805f9b34fb"},{"chars":["00002a05-0000-1000-8000-00805f9b34fb"],"uuid":"00001801-0000-1000-8000-00805f9b34fb"},{"chars":["00000010-0000-1000-8000-00805f9b34fb","00000001-0000-1000-8000-00805f9b34fb","00001001-0000-1000-8000-00805f9b34fb","00000002-0000-1000-8000-00805f9b34fb","00000013-0000-1000-8000-00805f9b34fb","00000004-0000-1000-8000-00805f9b34fb","00000014-0000-1000-8000-00805f9b34fb","00000007-0000-1000-8000-00805f9b34fb"],"uuid":"0000fe95-0000-1000-8000-00805f9b34fb"},{"chars":["8082caa8-41a6-4021-91c6-56f9b954cc34","9d84b9a3-000c-49d8-9183-855b673fda31","457871e8-d516-4ca1-9116-57d0b17b9cb2","5f78df94-798c-46f5-990a-b3eb6a065c88","6c53db25-47a1-45fe-a022-7c92fb334fd4","724249f0-5ec3-4b5f-8804-42345af08651"],"uuid":"0000fef5-0000-1000-8000-00805f9b34fb"},{"chars":["0000ffd1-0000-1000-8000-00805f9b34fb","0000ffd2-0000-1000-8000-00805f9b34fb","0000ffd3-0000-1000-8000-00805f9b34fb","0000ffd4-0000-1000-8000-00805f9b34fb","0000ffd5-0000-1000-8000-00805f9b34fb","0000ffd6-0000-1000-8000-00805f9b34fb","0000ffd7-0000-1000-8000-00805f9b34fb","0000ffd8-0000-1000-8000-00805f9b34fb","0000ffd9-0000-1000-8000-00805f9b34fb","0000ffda-0000-1000-8000-00805f9b34fb","0000ffdb-0000-1000-8000-00805f9b34fb","0000ffdc-0000-1000-8000-00805f9b34fb"],"uuid":"0000ffd0-0000-1000-8000-00805f9b34fb"}],"code":0,"key_is_connect_failed":false,"key_token":null}
但是同时也会接收到catch的错误信息:
{"line":92715,"column":57,"sourceURL":"http://localhost:8081/projects/com.roidmi.vacuum.ios/index.delta?platform=android&dev=true&minify=false"}
然而测试iOS,仍旧catch错误:
{"code":"ECOM.XIAOMI.BLELOGIN0","nativeStackIOS":["0 MiHome 0x00000001065e6f64 RCTFBQuickPerformanceLoggerConfigureHooks + 737452","1 MiHome 0x00000001065e6ec8 RCTFBQuickPerformanceLoggerConfigureHooks + 737296","2 MiHome 0x00000001064d0068 cxa_throw + 5594304","3 MiHome 0x000000010633e6c4 __cxa_throw + 3949340","4 MiHome 0x0000000106344544 cxa_throw + 3973532","5 MiHome 0x00000001063a0c20 __cxa_throw + 4352120","6 MiHome 0x00000001063649e0 __cxa_throw + 4105784","7 libdispatch.dylib 0x00000001996c16c8
+ 24","8 libdispatch.dylib 0x00000001996c2484 + 16","9 libdispatch.dylib 0x000000019966e9b4 + 1068","10 CoreFoundation
@dingshaoran @pencilCool
android能够正常连接蓝牙了,iOS仍然报错
connect 接口我们测试是OK的。请使用最新iPA再测试。
是最新ipa 最新SDK 目前android是能正常连接的,什么都不改,直接运行在iOS就是不行,看那个错误信息,ECOM.XIAOMI.BLELOGIN0 具体是什么错误呢?
iOS原因找到了:
Device.loadProperties("deviceName")
.then(map => {
MHGlobal.deviceName = map.get("deviceName");
})
.catch(error => {
MYLOG('Device.loadProperties error: '+JSON.stringify(error));
});
我在bt.connect之前调用了以上代码,就100%连接失败,android上无问题 @Copypeng
bluetooth.connect(-1).then((data) => { MYLOG("连接成功"); }).catch((data) => { MYLOG(("连接失败:"+data)); });
返回错误如下: "code":"ECOM.XIAOMI.BLELOGIN0"帮忙看下这个问题怎么解决
另外,麻烦再详细解答下:
我们的蓝牙是小米蓝牙模组,但协议是自定义的,那么应该选 1还是3? 以及 2 是用户分享过来的设备连接?