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

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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容