美文网首页
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