iOS phoneGap实现本地和JS互调

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

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

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

var exec = require('cordova/exec');

var LocalChart = function() {

};

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

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

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

}

});


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

@interface ChartPlugin:CDVPlugin{   

}

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


@implementation ChartPlugin


//这里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.arguments objectAtIndex: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);


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值