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