Webview与本机iOS应用程序通信的任何方式

Any way for webview to communicate with native iOS app?

本文关键字:何方 任何方 本机 iOS 应用程序 通信 Webview      更新时间:2023-09-26

我有一个包含网络视图的iPad应用程序。Web 视图的页面上有一个按钮,单击该按钮时,需要以某种方式告诉本机应用关闭 Web 视图。有什么办法可以做到这一点吗?即Web视图中的JavaScript将消息传递到本机应用程序的方法,反之亦然?

谢谢!

您可以考虑使用 -webView:shouldStartLoadWithRequest:navigationType: .创建一个虚拟链接,您可以识别并关闭 Web 视图。至于反过来,@Paska的回答听起来很合适。

NSString实例字段更改时,可能会触发NSNotification。使用这里的帖子来帮助理解如何在JavaScript和Objective-C之间进行通信。

然后,这只是通知和字符串逻辑的问题:

JavaScript 到 Objective-C 的步骤:

  1. 按下网页视图按钮。
  2. JavaScript 触发返回字符串的方法。
  3. 本地 NSString 已更新为表示 Web 视图中的按钮已按下(请参阅上面的帖子)。
  4. NSNotization基于字符串更改触发。
  5. Objective-C 关闭 Web 视图。

不确定你想从Objective-C传递回Web视图的内容,但上面的帖子应该会有所帮助。

您可以使用

以下方法附加任何操作

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

从您的网络视图中检测JavaScript!

这是文档: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

我认为最好的方法是使用伪图像。

JS将插入一个新图像,例如:http://example.com/callnative_1354524562763.gif?p1=v1&p2=v2

您的 Web 视图将覆盖NSURLCache以检索 1x1 透明图像并从您的 Web 内容中解析参数。

请注意,NSURLCache只缓存一次,因此请为每次调用生成新的时间戳。

这种方式适用于我的项目,并立即调用本机iOS应用程序。