我为cordova-plugin
应用(iOS平台)创建了一个ionic-1
。我想从我的js
的{{1}}文件的本机iOs
类中调用我的离子项目的objective-c
文件中创建的方法。
**请帮助找出我该如何实现? **
答案 0 :(得分:1)
您应使用Cordova channel
在 js 和 native 之间建立事件协议。您可以从 cordova-plugin-inappbrowser 获取示例。
链接的简要说明,
使用javascript代码
导入频道库
var channel = require('cordova/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]);
}
以本机代码
开火事件。
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:@{@"type":@"loadstart", @"url":[url absoluteString]}];
[pluginResult setKeepCallback:[NSNumber numberWithBool:YES]];
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];