Я пытаюсь внедрить плагин Cordova для ARKit в моем приложении ioni c, которое измеряет расстояние между двумя точками. Я могу успешно выполнить измерения, но не могу получить данные измерений в результате в моем приложении ioni c. Вот как выглядит мой код:
MeasurePlugin + ViewControllerDelegate.swift
extension MeasurePlugin: ViewControllerDelegate {
func allowMultiple() -> Bool {
return allowMultiplePoints ?? false;
}
//Dismiss View
func closeView() {
let data = myViewController.getMeasures();
var result: CDVPluginResult
if (!allowMultiple() && data.count > 0) {
result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: data[0])
} else {
result = CDVPluginResult(status: CDVCommandStatus_OK, messageAs: data)
}
NSLog(result.message as! String); //getting measured value here
myViewController.view.removeFromSuperview()
self.myViewController = nil
result.setKeepCallbackAs(true)
commandDelegate!.send(result, callbackId: finishListenerCallbackId)
}
@objc func setFinishListener(_ command: CDVInvokedUrlCommand) {
finishListenerCallbackId = command.callbackId
}
}
Мой www/cordova-plugin-measure.js файл выглядит так:
var exec = require('cordova/exec');
var pluginName = 'MeasurePlugin';
/**
* Callback when the view is dismissed
*/
exports.onFinish = function (success = function(){
console.log("OnFinish Success");
}, error = function(){}) {
exec(success, error, pluginName, 'setFinishListener');
};
Поэтому, когда я пытаюсь закрыть представление, вызывая функцию closeView (), я получаю сообщение об ошибке в xcode как «Недопустимый идентификатор обратного вызова, полученный sendPluginResult». Обратите внимание, что я получаю свое значение меры внутри результата (обратите внимание на NSLog (result.message as! String); код), но оно не отправляет это значение обратно моему компоненту ioni c. Есть идеи, что я здесь делаю не так?