美文网首页
创建swift 版本的 cordova 插件

创建swift 版本的 cordova 插件

作者: Jason_风筝 | 来源:发表于2018-11-10 08:38 被阅读0次

    官方博文
    首先我们知道cordova 一直用的是objective-c的语言, 所以一般我们创建插件时用的语言也objective-c. 但从swift 出来后, 苹果也在快速的更新, 它应该会慢慢成为以后的趋势, 所以我们也要关注下swift 怎么创建cordova 插件.
    如果想了解objective-c创建cordova 插件,可以看我的另一篇文章: 谈谈cordova 创建plugin,相信里面说的很详细, 希望能帮助到你.

    添加桥接文件

    我们知道, swift 调用oc的代码是需要在桥接文件在导入oc的头文件, 这样swift 就可以全局使用.
    所以我们首要任务是创建一个桥接头文件, 可以借助一个第三方的插件
    cordova-plugin-add-swift-support
    可以执行

    cordova plugin add cordova-plugin-add-swift-support --save
    
    • 执行完这个后, 会帮你创建好桥接文件, 而且在里面导入了: #import <Cordova/CDV.h>, 这样就可以在swift 文件中全局使用cordova 相关的东西
    • 如果你是创建自己的swift 插件, 则可以在plugin.xml 中写上依赖
    <dependency id="cordova-plugin-add-swift-support" version="1.7.2"/>
    
    • 默认情况下,添加的是Swift 3,如果是Swift(2.3),可以在项目config.xml内部的<platform name="ios">内配置为:
    <preference name="UsezSwiftLanguageVersion" value="true" />
    
    • 也可以在项目内的config.xml<platform name="ios">指定swift版本:
    <preference name="UseSwiftLanguageVersion" value="4" />
    

    准备编写.swift 文件

    swift 文件在plugin.xml的导入方式类似这样:我的另一篇文章: 谈谈cordova 创建plugin会详细介绍, 其他东西和oc插件差不多

    <source-file src="src/ios/ModusEchoSwift.swift" />
    

    swift 文件

    import UIKit
    
    @objc(ModusEchoSwift) class ModusEchoSwift : CDVPlugin {
        
     @objc(openUrl:) func openUrl(_ command: CDVInvokedUrlCommand) {
            guard let params = command.argument(at: 0) as? [String: Any] else {return}
            let result: [String: String] = [:]
            let pluginResult = CDVPluginResult(
                status: CDVCommandStatus_OK,
                messageAs: result
            )
            guard let url = params["url"] as? String else {return}
            // do something ......
            self.commandDelegate!.send(
                pluginResult,
                callbackId: command.callbackId
            )
        }
        
    }
    /*
    这里主要说几点注意的, 我们要想swift的类可以被cordova调用
    1. swift类要继承NSObject , 这里继承CDVPlugin,它最终就是继承NSObject.
    2. 类名前面要加上 @objc(类名) 
    3. 提供给cordova 帮你调用的方法名前面也必须加上:  @objc(方法名:) , 注意方法后面一定有 :  , 因为一定会有参数, 在OC中 : 也是方法名的一部分. 关于这一点,swift 3.0后的就建议加上, swift2.3好像可以不用加
    */
    
    

    到这里, 所写的swift 文件就能被cordova正常调用了,如果是想看关于swift与objective-c 的混合语言打包成framework的话, 请看我的另一篇文章:关于打包 swift 与OC 兼容的framework

    相关文章

      网友评论

          本文标题:创建swift 版本的 cordova 插件

          本文链接:https://www.haomeiwen.com/subject/zgaaxqtx.html