cordova插件是其设计理念的精髓部分,创建并使用自定义插件也是一件比较容易的事。但在这个过程中也容易进入一些误区或者有一些错误的理解,下面从笔者实际开发中遇到的问题出发,对其中的一些注意点和重要概念进行适当的阐述。

相关修改的文件:

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可以用于向原生传递数据。

容易出问题的点:

  1. config.xml的配置一定要注意,exec的调用参数也要与之匹配。
  2. 访问外部的url需要加入到白名单(默认是启用白名单的)。
  3. inline-js 不执行的情况需要在CSR中作配置或者直接注释掉。

当前项目中存在的问题:

  1. 在config.xml里面加入了大量的feature,实际这个是不必要的。1个模块可以对应多个接口,这些接口可以只从属于一个插件模块。
  2. 有些调用可能存在时间较长的情况,需要将其运行在background thread(通过runInBackground方法,在block中执行)。

官方参考文档

cordova插件iOS平台实战开发注意点的更多相关文章

  1. iOS平台软件开发工具(一)-新建的工程使用CocoaPods工具集成第三方框架

    CocoaPods是一款集合了上千个第三方开源库的开发工具,能够大幅度的提升团队项目的开发效率,降低时间成本. 那么就看一下CocoaPods这个工具在项目中的使用体现吧. 我们马上用ASIHTTPR ...

  2. React-Native学习手册----搭建基于ios平台的开发环境

    首先推荐几个链接: React-Native 官网地址:https://facebook.github.io/react-native/docs/getting-started React-Nativ ...

  3. WKWebView针对于Cordova的IOS平台性能提升

    使用cordova做跨平台开发已久,针对于Android的性能与页面渲染问题仍然让人头疼,因为仍然有一部分人使用性能一般的手机,版本在 4.2-4.4之间,甚至都无法支持HTML5的flex布局,使得 ...

  4. 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  5. 《React Native 精解与实战》书籍连载「配置 iOS 与 Android 开发环境」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  6. cordova插件汇总

    1.获取当前应用的版本号 cordova plugin add cordova-plugin-app-version 2.获取网络连接信息 cordova plugin add cordova-plu ...

  7. cordova插件列表

    主要来源为http://blog.csdn.net/github_39500961/article/details/76270299 1.获取当前应用的版本号 cordova plugin add c ...

  8. cordova插件整理

    原文:cordova插件整理 1.获取当前应用的版本号 cordova plugin add cordova-plugin-app-version 2.获取网络连接信息 cordova plugin ...

  9. Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件)

    Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件) 前文介绍了通过 Safari 的 Web检查器,可以看到控制台输出的信息.但有时这样调试代码不太方便,如果在 ...

随机推荐

  1. Seismic Unix的一些历史

    本文是我从官网上拷贝过来的,上国外网越来越慢了……(离题了). At the Society of Exploration Geophysicists (SEG) Annual Meeting in ...

  2. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...

  3. FZU2219 StarCraft(哈夫曼树)

    一个工人可以变成两个工人,这样可以画出一颗二叉树,那么就是在叶子上建的建筑. 问题的时间花费,可以看作是这颗二叉树中各个叶子的深度*k+叶子对应建筑耗费时间中的最大值. 容易想到,类似哈夫曼树一样,从 ...

  4. 超级楼梯[HDU2041]

    超级楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. 转:jQuery Ajax 实例 全解析

    jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对 ...

  6. 【wikioi】1269 匈牙利游戏(次短路+spfa)

    http://www.wikioi.com/problem/1269/ 噗,想不到.. 次短路就是在松弛的时候做下手脚. 设d1为最短路,d2为次短路 有 d1[v]>d1[u]+w(u, v) ...

  7. POST模拟百度登录和自动发帖

    这里用HttpClient发包模拟百度登录和发帖,验证码部分采用机器下载人工识别. 登陆百度的原理:1. 访问https://passport.baidu.com/v2/api/?getapi& ...

  8. js的url中传递中文参数乱码,如何获取url中参数问题

    一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript ...

  9. OpenCV2.4.10 Mac Qt Configuration

    Download OpenCV 2.4.10 Download CMake 2.8 Open CMake and choose the source code directory and build ...

  10. jar MANIFEST.MF 汇总

    : Manifest-Version: 1.0Created-By: Apache Ant 1.5.1Extension-Name: Struts FrameworkSpecification-Tit ...