Mac phonegap 入门 -Cordova plugin

使用 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

  1. 现在打开你的 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]);
     }
  2. 打开 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>
  3. 现在返回index.js 并且在onDeviceReady 函数里,注释app.receivedEvent('deviceready'),并加入document.getElementById("bookmarkBtn").onclick = app.addBookmark;

     onDeviceReady: function() {     
     //app.receivedEvent('deviceready');
         document.getElementById("bookmarkBtn").onclick = app.addBookmark;
     },
  4. 到config.xml加入下面的节点

     <feature name="MyHybridPlugin">
         <param name="ios-package" value="MyHybridPlugin" />
     </feature>
  5. 结果呈现


转载于:https://my.oschina.net/u/2283971/blog/509636

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值