我为我的 ionic-1 应用程序(iOS 平台)创建了一个 cordova-plugin 。我想从我的 objective-c 文件中的 native iOs 类调用我的 ionic 项目的 js 文件中创建的方法>cordova-plugin.
** 请帮助了解我如何实现这一目标? **
Best Answer-推荐答案 strong>
您应该使用在 js 和 native 之间制作事件协议(protocol)的 cordova channel 。您可以从 cordova-plugin-inappbrowser 获取示例。
链接的简要说明,
在 javascript 代码中
导入 channel 库
var channel = require('cordova/channel');
创建以事件名称命名的 channel
function InAppBrowser () {
this.channels = {
'loadstart': channel.create('loadstart'),
'loadstop': channel.create('loadstop'),
'loaderror': channel.create('loaderror'),
'exit': channel.create('exit'),
'customscheme': channel.create('customscheme')
};
}
添加和删除监听函数
InAppBrowser.prototype = {
addEventListener: function (eventname, f) {
if (eventname in this.channels) {
this.channels[eventname].subscribe(f);
}
},
removeEventListener: function (eventname, f) {
if (eventname in this.channels) {
this.channels[eventname].unsubscribe(f);
}
},
};
在 init 中注册回调(可选)。您也可以在您的应用中执行此操作。
for (var callbackName in callbacks) {
iab.addEventListener(callbackName, callbacks[callbackName]);
}
在 native 代码中
触发事件。
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary{@"type""loadstart", @"url":[url absoluteString]}];
[pluginResult setKeepCallback:[NSNumber numberWithBool:YES]];
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];
关于javascript - 如何从 iOS cordova 插件调用 ionic 1 方法,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/51704934/
|