为Cordova开发iOS插件

本篇在上一篇--Cordova的环境搭建基础上以一个例子讲解如何为Cordova开发iOS插件。

二 为Cordova开发iOS插件

1、创建插件文件

在Plugins文件夹下创建插件文件夹命名为com.catchzeng.testplugin

为Cordova开发iOS插件_第1张图片
plugin

创建类TestPlugin继承于CDVPlugin

为Cordova开发iOS插件_第2张图片
testplugin

注意:创建类后会报头文件#import 找不到的问题,替换成#import 即可。

2、实现插件代码

该插件实现的功能是JS调用原生的代码弹出一个自定义视图控制器(附带参数),并在弹起后回传参数给JS。

为Cordova开发iOS插件_第3张图片
test

@implementation TestPlugin

-(void)testWithTitle:(CDVInvokedUrlCommand *)command{
    if (command.arguments.count>0) {
        //customize argument
        NSString* title = command.arguments[0];

        TestViewController* testViewCtrl = [[TestViewController alloc]init];
        [self.viewController presentViewController:testViewCtrl animated:YES completion:^{
            CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"我是OC回传的参数!"];
            testViewCtrl.labTitle.text = title;
            [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
        }];
    }else{
        //callback
        CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"没有参数"];
        [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
    }
}

@end

说明:
command.arguments:JS传递过来的参数列表,可自行协定参数的格式
CDVPluginResult:插件结果回调类,用于描述结果的状态和回传数据给JS
command.callbackId:对应回调JS时,指定发送的函数id

3、测试插件

在config.xml文件中加入以下代码让JS能够调用我们的OC类,需要注意的是需要配置Staging下的config.xml,而不是外部的


  


配置文件说明:
ocTestPlugin:插件名称,
TestPlugin:oc中的类名
修改index.html



    
        testPlugin
        
            
            
            

    
        
        

js cordova.exec调用说明:

cordova.exec(testSuccess,testFailed,"ocTestPlugin","testWithTitle",["我是JS传的参数!"]);

testSuccess:调用成功处理函数
testFailed:调用失败处理函数
ocTestPlugin:oc插件名称
testWithTitle:oc插件暴露的方法名

最后附上工程的结构图

为Cordova开发iOS插件_第4张图片
project

开发iOS插件部分就先讲到这里,下一篇将讲解如何将本篇的插件打包供前端人员使用。

链接:https://www.jianshu.com/p/96079fcccb4e

你可能感兴趣的:(为Cordova开发iOS插件)