javascript - 您可以使用 PhoneGap 和 iOS 从 native 代码(不在回调中)调用 javascript 函数吗?

标签 javascript objective-c events cordova cocoaasyncsocket

我希望能够在我的应用程序中使用 PhoneGap。我将不得不构建一个自定义协议(protocol)/插件,以便我可以从 Javascript 调用 native 方法。我知道您可以在 native 代码返回时在 Javascript 中调用成功函数。

我需要做的是从 native 代码调用 javascript 函数。基本上,该应用程序将通过本地网络连接到 OSX 配套应用程序,当 OSX 应用程序将数据发送到 iOS 应用程序时,它在 Objective C 方法中进行处理,我需要能够将结果发送到 PhoneGap/javascript 并做一些事情在 WebView 中使用它。

这可能吗?我只能找到有关从 javascript 调用 native 的信息,而不是相反。

谢谢, 托马斯

使用下面答案中的代码:

MyPhoneGapPlugin.m

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
    NSLog(@"Connected To %@:%i.", host, port);

    NSString* jsString = [NSString stringWithFormat:@"alert(connected to: %@);", host];
    [theWebView stringByEvaluatingJavaScriptFromString:jsString];

    [self readWithTag:2];
}

给我错误“未知接收者‘theWebView’,你是说‘UIWebView’吗?”

更新:找到答案:使用 phonegap 助手我可以写这样的东西......

    [super writeJavascript:@"alert('connected');"];

最佳答案

您可以使用 UIWebView 从 native 代码轻松调用 JavaScript:

[webView stringByEvaluatingJavaScriptFromString:@"myJSFunction()"];

将某处函数的结果用作 JS 函数的参数:

NSString *stringData = getStringData(); // however you get it
[webView stringByEvaluatingJavaScriptFromString:
 [NSString stringWithFormat:@"myJSFunction(%@)", stringData]];

关于javascript - 您可以使用 PhoneGap 和 iOS 从 native 代码(不在回调中)调用 javascript 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719881/

相关文章:

javascript - 元素在滚动点之间可见

javascript - 在 IE 中查看 DOM 级别 2 事件处理程序

javascript - 为一个点添加事件监听器

javascript - 使用联系表单 7 插件更改联系人提交的格式

javascript - ember 中的动态页面

javascript - 如何在 JSON 中查找键的值

iOS - Objective C - 无法使用 UInt8 渲染像素

iphone - 隐藏 UIToolbar UIBarButtonItems

ios - Whatsapp 如何在不询问位置详细信息的情况下确定用户所在的国家/地区?

javascript - 在 JavaScript 中等待 Promise 和事件监听器