从Cordova调用Swift函数

时间:2017-06-11 21:17:38

标签: javascript ios cordova swift3 cordova-plugins

我有一个用Swift编写的原生iOS应用程序,它可以独立运行。但是,目前,我正在探索Cordova并使用我已有的Swift代码为它开发插件。让我们说我的原生Swift代码如下,我要调用的函数是 startDataLog()

func startDataLog() {
  // Set file logging parameters and do some logging etc...
  let fileName = "log_\(dateFormatter.string(from: Date())).log"
  let filePath = URL(fileURLWithPath: 
  (NSSearchPathForDirectoriesInDomains(.documentDirectory, 
  .userDomainMask, true)[0] as 
  NSString).appendingPathComponent(fileName))
  //do other stuffs here...
 }

假设为新插件正确配置了plugin.xml和桥接头: 首先,我需要在调用iOS代码的www / plugin.js 中添加它。在我的例子中startDataLog:

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

module.exports = {
  'startDataLog': function (successCallback, errorCallback) {
   cordova.exec(successCallback, errorCallback, serviceName, 
   'startDataLog', [])
    },
  }

然后在我的原生Swift代码中,我将添加以下内容:

@objc(CentralPlugin) class CentralPlugin: CDVPlugin {
 func startDataLog(command: CDVInvokedUrlCommand) {
   // Set file logging parameters and does some extras
   let fileName = "log_\(dateFormatter.string(from: Date())).log"
   let filePath = URL(fileURLWithPath: 
   (NSSearchPathForDirectoriesInDomains(.documentDirectory, 
   .userDomainMask, true)[0] as 
   NSString).appendingPathComponent(fileName))
   //do other stuffs here...
     }
   }     

我不清楚是否需要对原生Swift代码或我要调用的函数进行操作?正在添加

(command: CDVInvokedUrlCommand)

到func是正确的还是我在这里做了一些非常错误的事情。我是Cordova的新手,事实上,没有很多基于整合Cordova + Swift的教程。

任何反馈或指示对于启动我的插件开发都非常有帮助。请建议。

0 个答案:

没有答案