cordova调用过程

本文详细介绍了如何使用Cordova使前端JavaScript代码调用Objective-C原生代码的过程,包括向前端暴露JS对象、配置datePicker、映射到原生对象以及实现原生对象的详细步骤。

cordova使前端js代码可以调用到原生的objective-c代码,本文小结一下具体的调用过程:

向前端代码暴露js对象作为调用接口

var options = {
    date: config.date,
    x: $(el).offset().left + 300,
    y: $(el).offset().top,
    mode: 'date'
};

datePicker.show(options, function (date) {
    var month = date.getMonth() + 1;
    callback(null, date.getFullYear() + "-" + month + "-" + date.getDate());
});

上面的datePicker就是cordova plugin设置的js对象,前端的js代码可以像调用普通js函数一样调用show函数,并不知道show()函数内部调用了原生代码

在cordova的js中设置datePicker对象

cordova.define("de.websector.datepicker.DatePicker", function(require, exports, module) {

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

               DatePicker.prototype.show = function(options, cb) {
    
                   // prepare parameters
                   exec(null, null, "DatePicker", "show", [defaults]);
               };

               var datePicker = new DatePicker();

               module.exports = datePicker;
               
});

映射datePicker对象到原生对象

有2个配置文件,一个是cordova_plugins.js

    {
        "file": "plugins/de.websector.datepicker/www/DatePicker.js",
        "id": "de.websector.datepicker.DatePicker",
        "clobbers": [
            "datePicker"
        ]
    }

另一个是config.xml,这个文件配置了真正实现插件功能的原生类

<feature name="DatePicker">
    <param name="ios-package" value="DatePicker" />
</feature>

实现原生对象

根据前面config.xml中的命名规则,会在特定目录下找到DatePicker.m,这个就是插件的实现。其头文件是:

@interface DatePicker : CDVPlugin <UIActionSheetDelegate, UIPopoverControllerDelegate>

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

@end

通过上述整个流程,前端的js代码就可以调到原生的代码了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值