美文网首页
iOS phoneGap/Cordova 实现本地和JS互调

iOS phoneGap/Cordova 实现本地和JS互调

作者: DestinyFighter_ | 来源:发表于2015-10-30 14:47 被阅读500次

1.在IOS项目导入phoneGap SDK的库文件,可以采用工程引用的方法导入。

2.写一个js来封装好一些方法来调用本地项目里的方法,这里需要查看phoneGap里插件调用的api。如:

cordova.define("cordova/plugin/localChart",function(require, exports, module) {

varexec = require('cordova/exec');

varLocalChart =function() {

};

//这里getData就是调用本地里写的一个方法名称,chart_id是携带的参数,传给本地工程getData方法中的参数。

LocalChart.prototype.getData =function(success, failed,chart_id) {

exec(success, failed,"LocalChart","getData", [chart_id]);

}

});

项目中需要定义一个类来接受从JS传来的消息 如:

#import <Cordova/CDVPlugin.h>

@interfaceChartPlugin:CDVPlugin

-(void)getData:(CDVInvokedUrlCommand*)command;

@end

#import "MyPlugin.h"

@implementationChartPlugin

//这里getData要和 上边exec(success, failed,"LocalChart","getData",

[chart_id]); “getData”保持一致.具体请详情看phoneGap plugins api.

- (void)getData:(CDVInvokedUrlCommand*)command

{

CDVPluginResult* pluginResult =nil;

ChartDataManager*chartDataManager = [ChartDataManager getInstance];

NSString*chartId = [command.argumentsobjectAtIndex:0];

NSString*chartData = [chartDataManager getChartDataByChartId:chartId];

if(chartData){

pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:chartData];

}else{

pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"Arg was null"]

}

//这里是通过代理来将数据传递给js中。

[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];

}

最后,你在JS中可以定义一个function来调用getData方法从本地工程中拉取数据。如:

var lc = cordova.require("cordova/plugin/localChart");

var dataReady =function(data){

//这里拿到的数据进行解析。

jsonData = JSON.parse(data);

}

lc.getData(dataReady,dataError,chartId);

相关文章

网友评论

      本文标题:iOS phoneGap/Cordova 实现本地和JS互调

      本文链接:https://www.haomeiwen.com/subject/gpmfhttx.html