在uniapp的原生插件开发中,遇到有原生插件中需要执行定位信息,陀螺仪等信息返回的场景中可以使用globalEvent 事件来监听,
原uniapp官方给出的文档中,在vue页面中注册监听
var globalEvent = uni.requireNativePlugin('globalEvent');
globalEvent.addEventListener('myEvent', function(e) {
console.log('myEvent'+JSON.stringify(e));
});
原生插件中发送event事件示例
Map<String,Object> params=new HashMap<>();
params.put("key","value");
mUniSDKInstance.fireGlobalEventCallback("myEvent", params);
这里遇到个坑,我照着官方文档中的示例复制过来,无论如何都接收不到信息。然后我在手写的时候addEventListener方法给出的代码提示是h5里面的方法提示,然后我就点到h5的api文档里面去看了对应方法,点我查看h5官方api文档,是这样使用的
,然后我就抱着试一试的心态也这样注册监听了。结果还真就接收到了返回信息了
//通过plus.globalEvent.addEventListener方法注册全局方法,供原生代码中的mWXSDKInstance.fireGlobalEventCallback方法调用
plus.globalEvent.addEventListener('myEvent', function(e) {
console.log('myEvent'+JSON.stringify(e));
});
在调试原生插件的时候我一直接收不到原生插件返回的信息,这东西昨天折磨了我一下午都没搞定,后来偶然自己手写的时候根据代码提示发现h5的使用方式,偶然试了一下居然就解决我的问题。看来多动手,多尝试有时候还是能收获意想不到的意外啊。所以处理完问题后我就迫不及待的把问题记录并分享出来了,希望其他遇到这样的问题的同学能少走弯路了。
补充说明 2021-10-25:在uniapp中使用plus.globalEvent.addEventListener注册全局监听的时候,注册只需要写一次,不要每次在uniapp的触发监听的地方都去写plus.globalEvent.addEventListener监听,不然你多次触发调用原生插件返回数据的时候回产生重复数据。亲们,切记哦,血一般的教育。比如你只在当前页面接收原生插件的数据返回,那么可以把监听方法写在onload中,如果是uniapp的全局监听的话可写在APP.vue页面的onluanch方法中(这个情形没有测试,亲们可以测试一下,我猜应该是这里)