cordova插件iOS平台实战开发注意点
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可以用于向原生传递数据。
容易出问题的点:
- config.xml的配置一定要注意,exec的调用参数也要与之匹配。
 - 访问外部的url需要加入到白名单(默认是启用白名单的)。
 - inline-js 不执行的情况需要在CSR中作配置或者直接注释掉。
 
当前项目中存在的问题:
- 在config.xml里面加入了大量的feature,实际这个是不必要的。1个模块可以对应多个接口,这些接口可以只从属于一个插件模块。
 - 有些调用可能存在时间较长的情况,需要将其运行在background thread(通过runInBackground方法,在block中执行)。
 
cordova插件iOS平台实战开发注意点的更多相关文章
- iOS平台软件开发工具(一)-新建的工程使用CocoaPods工具集成第三方框架
		
CocoaPods是一款集合了上千个第三方开源库的开发工具,能够大幅度的提升团队项目的开发效率,降低时间成本. 那么就看一下CocoaPods这个工具在项目中的使用体现吧. 我们马上用ASIHTTPR ...
 - React-Native学习手册----搭建基于ios平台的开发环境
		
首先推荐几个链接: React-Native 官网地址:https://facebook.github.io/react-native/docs/getting-started React-Nativ ...
 - WKWebView针对于Cordova的IOS平台性能提升
		
使用cordova做跨平台开发已久,针对于Android的性能与页面渲染问题仍然让人头疼,因为仍然有一部分人使用性能一般的手机,版本在 4.2-4.4之间,甚至都无法支持HTML5的flex布局,使得 ...
 - 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」
		
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
 - 《React Native 精解与实战》书籍连载「配置 iOS 与 Android 开发环境」
		
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
 - cordova插件汇总
		
1.获取当前应用的版本号 cordova plugin add cordova-plugin-app-version 2.获取网络连接信息 cordova plugin add cordova-plu ...
 - cordova插件列表
		
主要来源为http://blog.csdn.net/github_39500961/article/details/76270299 1.获取当前应用的版本号 cordova plugin add c ...
 - cordova插件整理
		
原文:cordova插件整理 1.获取当前应用的版本号 cordova plugin add cordova-plugin-app-version 2.获取网络连接信息 cordova plugin ...
 - Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件)
		
Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件) 前文介绍了通过 Safari 的 Web检查器,可以看到控制台输出的信息.但有时这样调试代码不太方便,如果在 ...
 
随机推荐
- Android 编程下的 Secret Code
			
我们很多人应该都做过这样的操作,打开拨号键盘输入 *#*#4636#*#* 等字符就会弹出一个界面显示手机相关的一些信息,这个功能在 Android 中被称为 Android Secret Code, ...
 - 2016.7.9   计算机网络复习要点第四章之网际控制报文协议ICMP
			
1.ICMP允许主机或路由器报告差错情况和提交有关异常情况的报告:为了更有效地转发IP数据报和提高交付成功的机会: 2.ICMP不是高层协议,因为ICMP报文是装在IP数据报中的,作为其中数据部分,所 ...
 - 简单几何(线段相交)  POJ 1066 Treasure Hunt
			
题目传送门 题意:从四面任意点出发,有若干障碍门,问最少要轰掉几扇门才能到达终点 分析:枚举入口点,也就是线段的两个端点,然后选取与其他线段相交点数最少的 + 1就是答案.特判一下n == 0的时候 ...
 - POJ2699 The Maximum Number of Strong Kings(最大流)
			
枚举所有Strong King的状态(最多1024种左右),然后判断是否合法. 判定合法用网络流,源点-比赛-人-汇点,这样连边. 源点向每场比赛连容量为1的边: 如果一场比赛,A和B,A是Stron ...
 - ios授权登录过程中一直提示“没有安装qq”
			
遇到问题:http://www.cocoachina.com/ask/questions/show/107029 之前都登录都很正常,这两天突然出现这个问题,没有安装qq软件的iphone手机上登录的 ...
 - object-c 要理解协议的几个重要概念
			
协议的声明/定义 调用协议 设置委托 协议的实现
 - HTML----锚点
			
练习做一个邮箱的注册页面 1.12行2列的表格 2.表格里面嵌入表单 3.最后建一个锚点 4.写具体内容 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...
 - 修改CSV中的某些值 -- 2
			
C:\aaa.csv "IPAddress","FullDomainName","RequestedTargetGroupName" &qu ...
 - 关于Message目录的设定
			
Yii2 默认了两个message 目录,一个是 yii 和app ,所以如果想自定义message目录,要在自己配置文件中覆盖 i18n的设定,请注意,不能使用 *,要使用 app,才能生效
 - maven相关概念
			
1.maven仓库分为:本地仓库,远程仓库.远程仓库分为私服.中央仓储和其他公共库. 2.mvn clean install 部署到本地仓库 3.mvn clean deploy 部署到远程仓储 4. ...