iOS 与 js 交互

iOS如何监控js ,可以通过js调用oc方法

阅读 5.5k
2 个回答

参考这个看看

图片描述

JS 和 iOS 互调是个很经典的问题,我们先来看下不借助外部框架怎么搞的

不借助外部框架【WebView】

iOS 调用 JS

[webView stringByEvaluatingJavaScriptFromString:@"alert('boom shaka laka')"];

非常的 easy

JS 调用 iOS,我比较推崇的是调用一个 url,然后自己定义解析规则的方式。
我举个?吧,下面是一段 html 代码,

<a href="app://locations/get">

用户在你的 WebView 上面点了这样一个连接,这个时候会调起

  • (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType

    这个时候你解析下 request.URL 做下判断就ok了。。

不借助外部框架 【WKWebView】

WKWebView 性能更屌,内存更少,但是缓存之类的设置非常的忧伤。。。Cookie 更是诡异

WKWebView 的坑看这里
https://github.com/ShingoFukuyama/WKWebViewTips/blob/master/README.md

iOS 调用 JS

一样很 easy,这样调用就好了

evaluateJavaScript:script completionHandler:^(id result, NSError *error)

JS 调用 iOS

一样的。。找到 url 处理

  • (void)webView:(WKWebView )webView decidePolicyForNavigationAction:(WKNavigationAction )navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

可以用的轮子

WebViewJavascriptBridge
https://github.com/marcuswestin/

= =其实我不太喜欢这个轮子。。。用起来太绕了

JSPatch
https://github.com/bang590/JSPatch
这个好像跟问题没有关系。。不过请关注。。神器。

Hybrid App 的坑其实也不多。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进