Ionic调研(一)——Ionic与原生通讯问题(Cordova
2018-09-07 本文已影响1人
BryantXie
在网上找到一个Cordova插件Cordova-Broadcaster,用于Ionic和原生的交互,GitHub上有源码和Sample,这里主要讲使用时的问题。
1. 使用步骤
- 安装配置ionic
- 安装Cordova-Broadcaster插件
ionic cordova plug add cordova-broadcaster --save
- 编写代码,请参考Sample
2. Cordova-Broadcaster解析
这个插件是一个原生插件
target OS | Native Technology |
---|---|
IOS | NotificationCenter |
Android | LocalBroadcastManager |
其中Android平台对应的插件代码封装在了一个CDVBroadcasterjava类中。
3. 使用问题
3.1 在浏览器中跑报错
Error: Uncaught (in promise): cordova_not_available
image.png
原因是,使用到Native插件时不支持在浏览器中跑。
3.2 在真机上跑报错
plugin not installed
打开AS,查看目录结构,在src/org目录下确实未找到CDVBroadcaster这个类,说明插件安装或者编译出了问题。
解决方案:
打开终端,重新安装插件,再次运行ionic cordova run android,运行成功,不报这个错误了。
3.3 在真机上跑不报错,但是没有收到广播
这个问题的原因出在LocalBroadcastManager上面,LocalBroadcastManager是support.v4包提供的类,在编译后虽然会在依赖中添加v4包的依赖,但是实际上若本机上没有对应平台的v4包则无法引用到。
解决方案:
- 修改v4包为本地有的包
- 打开AS,点击sync下载对应的包,然后run