我有一个用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的教程。
任何反馈或指示对于启动我的插件开发都非常有帮助。请建议。