App开发如何扩展和使用本地插件(Cordova plugin),基于完全开源免费的框架为例
2015-09-22 10:48
886 查看
App开发如何扩展和使用本地插件(Cordova plugin),基于完全开源免费的框架为例
1)开始代码.Cordova 就是原来phonegap 项目的新名称。2)CDVMyPlugin.h内容
3)CDVMyPlugin.m内容
4)JS封装通用调用方法
5)JS调用
6)配置插件
7)源代码
1)开始代码.Cordova 就是原来phonegap 项目的新名称。
介绍 :
http://baike.baidu.com/link?url=lnda11nIXlOJx_-0cBBvUz_Kftf9GN3d1-ccq-mdfr4pOHASc_FQUHxHjoXbh7boZGfkMl4gExOvCU14gViqmK
官网链接:
http://cordova.apache.org/
Cordova项目github地址:
https://github.com/apache/cordova-ios
原来做插件的思路(IOS):
/article/2192768.html
2)CDVMyPlugin.h内容
.h 文件和.m 文件的位置比较随意,一般最好是做插件按照组管理,跟一个插件相关的东东都放置到一个文件目录下,具体看个人习惯。
#import <Foundation/Foundation.h> #import <Cordova/CDVPlugin.h> @interface CDVMyPlugin : CDVPlugin // Instance Method - (void)myMethod:(CDVInvokedUrlCommand*)command; @end
3)CDVMyPlugin.m内容
从phonegap到Cordova还是做了很大的改变的,但是具体的插件思路改变并没有多少。
#import "CDVMyPlguin.h" @implementation CDVMyPlugin - (void)myMethod:(CDVInvokedUrlCommand*)command { // 得到Javascript端发送过来的字符串 NSString* myarg = [command.arguments objectAtIndex:0]; // 创建我们要返回给js端的字符串 NSMutableString *stringToReturn = [NSMutableString stringWithString: @"我是返回的:"]; [stringToReturn appendString:myarg]; // Create Plugin Result CDVPluginResult* pluginResult = nil; // 检查发送过来的字符串是否为nil,如果为nil,就以PluginResult的Error形式返回 if (myarg != nil) { // Call the javascript success function pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:stringToReturn ]; } else { // Call the javascript error function pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"Arg was null"]; } [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; } @end
4)JS封装通用调用方法
同原先没有做任何的改变。个人推测也是具体的JS 接口不做该变,但具体的原生代码实现方法做相应的升级与改良。
//调用IOS方法插件 var MyIOSPlugin = { /** * 调用IOS方法 * @param method 要调用IOS插件的方法名 * @param parameter 参数[数组] * @param success 成功回调 * @param fail 失败回调 * @returns {*} */ nativeFunction: function(method, parameter, success, fail) { return Cordova.exec(success, fail, "MyPlugin", method, parameter); } };
5)JS调用
js的调用呢,几乎没变。限于本人的js 水平,就bu要吐槽js的代码烂了。需要注意的是js的引用路径不要弄错了。js执行时出错不抱异常这一点相对其他语言真是十分操蛋!!十分操蛋!!十分操蛋!!
<script type="text/javascript" src="js/MyPlguin.js"></script> <script> document.addEventListener("deviceready",onDeviceReady,false); function onDeviceReady(){ alert("111111111"); MyIOSPlugin.nativeFunction("myMethod",['HelloWorld'], function(result) { alert("Success: \r\n"+result); }, function(error) { alert("Error: \r\n"+error); } ); alert("111111111"); } </script>
6)配置插件
<feature name="MyPlugin"> <param name="ios-package" value="CDVMyPlugin" /> </feature>
这个需要注意的是 配置插件的位置:config.xml
以及config.xml 内的具体位置:
<widget> ****** ****** <feature name="MyPlugin"> <param name="ios-package" value="CDVMyPlugin" /> </feature> </widget>
打完收功。
源代码地址:
http://pan.baidu.com/s/1jG6JEAy
相关文章推荐
- iOS开发之1分钟集成超炫的个人界面
- Android数据存储SharedPreference用法简单示例
- Swift初探之纯代码写tabBar
- ios swift generator 文章推荐
- 【受够了系列】如何在手机端调试脚本程序?
- ios开发之通知事件
- IOS 百度地图在IOS9上显示不出来的解决办法
- Swift版仿封装的个人界面,一分钟集成不是梦!
- Apple Swift编程语言入门教程
- iOS 清除缓存
- 深入讲解Android—WebView
- iOS In-App Purchase 内购之使用产品元数据
- session实现购物系统的简例和application实现统计页面访问次数的简例
- 【Node.app】Node.js for iOS
- Objective-C可变数组的声明与使用
- Android 抓取正方数据
- 问题-XE8报Object factory for class{xx-xx-xx-xx-xx} is missing. To register it, you can drop component[TFDGUIxWaitCursor] into your project.
- ios开发---视图切换-storyboard创建
- Android从零单排之自动跟新
- Android Dependencies小差号引起的问题