iOS的本机应用程序和网页的JavaScript之间的通信

jAc*_*OdE 7 javascript ios

我在UIWebView中加载了一个网页,该页面的javascript函数需要来自本机iOs应用程序的数据,即NSString.Js函数如何访问本机应用程序中的数据?

谢谢,

lvreiny

Bjö*_*ser 11

您可以在Obj-C的UIWebView中执行JavaScript.只需致电[webView stringByEvaluatingJavaScriptFromString:@"myJavaScript"];.

我可以想象这样的设置:

网页

<html>
   <head>
      <script type="text/javascript">
         function callmeFromObjC(para1) {
             // do something
             alert(para1);
         }
      </script>
   </head>
   <body>
   </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Objective-C的

NSString *myParameter = @"myParameter";
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"callmeFromObjC('%@')", myParameter]];
Run Code Online (Sandbox Code Playgroud)

  • 实现像Johan Kool建议的自定义URL方案,然后从JS"myapp:// parameter1/parameter2/parameter3"调用这样的url来实现这项工作你还需要实现方法" - (BOOL)application:(UIApplication*)应用程序handleOpenURL:(NSURL*)url"在您的应用程序委托中.以下是一个完整的教程:http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html (3认同)
  • Björn是正确的,除了你不一定需要覆盖`-application:handleOpenURL:`.通常在`-webView:shouldStartLoadWithRequest:navigationType:`中更容易做到这一点. (3认同)

Mur*_*ali 7

使用WebViewJavaScriptBridge,您可以实现javaScript和iOS之间的双向通信.

请查看下面的链接以获取WebViewJavaScriptBridge.

我将这个桥用于iOS和JS之间的通信应用程序之一,反之亦然.

https://github.com/marcuswestin/WebViewJavascriptBridge.