使用 plugman 管理你项目的插件. 如果没有可以使用npm加一个.
(可以在iOS最小化地使用 Cordova console plugin 来接受log message):
$ plugman install --platform ios --project . --plugin cordova-plugin-console
Cordova plugin(插件) 是Cordova 和 iOS views通信的桥梁,下面将试图通过在tablevc里面添加一个数据来展示它的用法。
在iOS里,Cordova plugins 继承 CDVPlugin
,。当页面通过javaScrip进行cordova.exec函数时,返回一个CDVPluginResult实例。
exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:myStr];
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"Arg was null"];
返回结果可以参照 this doc.
Create a Cordova Plugin
下面将建立一个Cordova Plugin 类
#import <Cordova/CDVPlugin.h>
@interface MyHybridPlugin : CDVPlugin
- (void)addBookmark:(CDVInvokedUrlCommand*) command;
@end
#import "MyHybridPlugin.h"
#import "MainViewController.h"
#import "MyTableViewController.h"
@implementation MyHybridPlugin
-(void)addBookmark:(CDVInvokedUrlCommand*) command {
NSString* bookmark = [command.arguments objectAtIndex:0]; if(bookmark) {
NSLog(@"addBookmark %@", bookmark);
MainViewController* mvc = (MainViewController*)[self viewController];
MyTableViewController* tvc = (MyTableViewController*)mvc.tabBarController.viewControllers[1];
[tvc.bookmarks addObject:bookmark];
[tvc.tableView reloadData];
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
} else {
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
}@end
Use the Plugin
现在打开你的 Cordova index.js ,位于
www/js。加入下面代码
addBookmark: function() { var win = function(d) { console.log("Bookmark added!"); }; var fail = function(e) { console.log(e) } var bookmark = document.getElementById("bookmark").value cordova.exec(win, fail, "MyHybridPlugin", "addBookmark", [bookmark]); }
打开 index.html 替换div里的内容为下面的代码
<div class="app"> <label for="bookmark">Bookmark this:</label> <input id="bookmark" type="text" /> <button id="bookmarkBtn">Add a bookmark</button> </div>
现在返回index.js 并且在
onDeviceReady
函数里,注释app.receivedEvent('deviceready'),并加入document.getElementById("bookmarkBtn").onclick = app.addBookmark;onDeviceReady: function() { //app.receivedEvent('deviceready'); document.getElementById("bookmarkBtn").onclick = app.addBookmark; },
到config.xml加入下面的节点
<feature name="MyHybridPlugin"> <param name="ios-package" value="MyHybridPlugin" /> </feature>
结果呈现