cordova插件iOS平台实战开发注意点
2016-09-24 17:41
375 查看
cordova插件是其设计理念的精髓部分,创建并使用自定义插件也是一件比较容易的事。但在这个过程中也容易进入一些误区或者有一些错误的理解,下面从笔者实际开发中遇到的问题出发,对其中的一些注意点和重要概念进行适当的阐述。
相关修改的文件:
1. iOS原生开发的插件类;其中需要包括参数为(CDVInvokedUrlCommand *)command的接口(供web侧调用);还可以在其中实现一些生命周期方法,比如pluginInitialize(类公用的方法),但需要对其做相应的配置(在配置文件中,后面会说到)。
2. 映射用的配置文件config.xml. 示例如下:
可以这样理解每一个feature都对应着一个插件,这里的feature name也就是插件模块的名字;它需要和后面js调用native的exec方法的参数相同,否则就无法找到这个插件了。 而其中的param name固定为”ios-package”,即指定iOS平台;后面的value是对应的iOS原生类的名字(这个也是用来匹配到原生代码的,务必要正确)。后面的 param name=”onload” value=”true” 是可选的,配置此项后,插件的 pluginInitialize 才会在每次初始化的时候被调用.
3.index.html文件。这个是用来测试插件功能的html文件,我们可以在此处写一些测试的js代码来验证我们的插件功能。
ps: 新版本的cordova默认是启用CSR的,会禁用html中的inline-js,注释掉(或加上特定标记 unsafe-inline)之后inline-js才能起作用。
4.index.js
你也可以把测试代码写在index.js里。
cordova.exec的调用格式为:
前两个是回调处理函数,第三个是插件模块的名字,第四个是原生方法的方法名。后面的args可以用于向原生传递数据。
访问外部的url需要加入到白名单(默认是启用白名单的)。
inline-js 不执行的情况需要在CSR中作配置或者直接注释掉。
有些调用可能存在时间较长的情况,需要将其运行在background thread(通过runInBackground方法,在block中执行)。
官方参考文档
相关修改的文件:
1. iOS原生开发的插件类;其中需要包括参数为(CDVInvokedUrlCommand *)command的接口(供web侧调用);还可以在其中实现一些生命周期方法,比如pluginInitialize(类公用的方法),但需要对其做相应的配置(在配置文件中,后面会说到)。
2. 映射用的配置文件config.xml. 示例如下:
<feature name="GestureHandler"> <param name="ios-package" value="CDVGestureHandler" /> <param name="onload" value="true" /> </feature>
可以这样理解每一个feature都对应着一个插件,这里的feature name也就是插件模块的名字;它需要和后面js调用native的exec方法的参数相同,否则就无法找到这个插件了。 而其中的param name固定为”ios-package”,即指定iOS平台;后面的value是对应的iOS原生类的名字(这个也是用来匹配到原生代码的,务必要正确)。后面的 param name=”onload” value=”true” 是可选的,配置此项后,插件的 pluginInitialize 才会在每次初始化的时候被调用.
3.index.html文件。这个是用来测试插件功能的html文件,我们可以在此处写一些测试的js代码来验证我们的插件功能。
<script> function test() { cordova.exec(null, null, "TestOnly", "justTest", ['hello111']); //alert("OK") } function test2() { cordova.exec(null, null, "TestOnly", "justTest2", ['hello111']); //alert("OK") } </script> <input type="button" onclick="test()" value="插件测试"> <input type="button" onclick="test2()" value="插件测试2">
ps: 新版本的cordova默认是启用CSR的,会禁用html中的inline-js,注释掉(或加上特定标记 unsafe-inline)之后inline-js才能起作用。
4.index.js
你也可以把测试代码写在index.js里。
cordova.exec的调用格式为:
exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
前两个是回调处理函数,第三个是插件模块的名字,第四个是原生方法的方法名。后面的args可以用于向原生传递数据。
容易出问题的点:
config.xml的配置一定要注意,exec的调用参数也要与之匹配。访问外部的url需要加入到白名单(默认是启用白名单的)。
inline-js 不执行的情况需要在CSR中作配置或者直接注释掉。
当前项目中存在的问题:
在config.xml里面加入了大量的feature,实际这个是不必要的。1个模块可以对应多个接口,这些接口可以只从属于一个插件模块。有些调用可能存在时间较长的情况,需要将其运行在background thread(通过runInBackground方法,在block中执行)。
官方参考文档
相关文章推荐
- cordova插件iOS平台实战开发注意点
- iOS平台Cordova插件的开发方法
- cordova iOS平台的插件开发
- Cordova webapp实战开发:(6)如何写一个iOS下获取APP版本号的插件?
- iOS平台Cordova插件的开发方法
- Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件)
- iOS 平台开发OpenGL ES程序注意事项
- iOS项目开发实战——storyboard设置界面技巧与注意事项
- IOS平台开发实战培训
- HBuilder webApp开发(十四)iOS平台5+插件开发
- Cordova webapp实战开发:(5)如何写一个Andorid下自动更新的插件?
- Cordova for iOS-插件开发(二)
- Cordova - 使用Cordova开发iOS应用实战2(生命周期、使用Safari调试)
- Cordova webapp实战开发:(5)如何写一个Andorid下自动更新的插件?
- 使用Cordova进行iOS开发 (第三方插件的使用:Camera插件)
- Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)
- iOS平台第三方插件开发指导
- 跨平台移动开发实战(十一)------各平台(chrome+android+ios+webos)上的项目结构
- Cordova+ ios 插件开发