Phonegap 提供了iOS 设备的基础特性接口来供HTML页面调用,可是这些基础接口不能满足我们的一些特殊需求,所以有时候我们须要开发插件来扩展其功能。
基于PhoneGap3.4框架的iOS插件开发。主要分下面几个步骤:
1)搭建PhoneGap3.4的iOS开发环境,搭建步骤參考此文章。
2)编写.h头文件,演示样例代码例如以下:
#import <Cordova/CDVPlugin.h>
@interface CDVLogin : CDVPlugin
- (void)login:(CDVInvokedUrlCommand*)command;
@end
|
3)编写.m源码文件。演示样例代码例如以下:
#import "CDVLogin.h"
@implementation CDVLogin
- (void)login:(CDVInvokedUrlCommand*)command{
NSString *echo = @"NIL";
//插件返回值
CDVPluginResult *pluginResult = nil;
//获取传递过来的參数
NSString *param = [command.arguments objectAtIndex:0];
Boolean loginStatus = [self loginSystem:param];
if(loginStatus){
echo = @"YES";
//成功时插件的返回值
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:echo];
}else{
echo = @"NO";
//失败时插件的返回值
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:echo];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
-(Boolean) loginSystem:(NSString *)para
{
return YES;
}
@end
|
4)在config.xml 里注冊插件,例如以下:
<feature name="Login">
<param name="ios-package" value="CDVLogin"/>
</feature> |
5)js调用,例如以下:
var CustomPlugin = {
callNativeMethod: function (success, fail, param) {
var exec = cordova.require("cordova/exec");
return exec(success, fail,"Login","login",[param]);
}
};
function callNativePlugin( param ) {
CustomPlugin.callNativeMethod( nativePluginResultHandler, nativePluginErrorHandler, param );
}
function nativePluginResultHandler (result) {
// alert("SUCCESS: \r\n" + result);
}
function nativePluginErrorHandler (error) {
if(error == "NO"){
alert("调用失败!");
}
|