iOS 与web交互相关小结

1.iOS与web交互的四种方式

(1).拦截URL(都适用)

优点:兼容性最好的方式,iOS7之前的只能使用这种方式,不需要等到页面加载完就能实现OC调用JS或JS调用OC

缺点:需要频繁的解释字符串得到相应的方法名和传值,且调用的方法也不能进行回调传值。

(2).JavaScriptCore (仅适用于UIWebView,iOS7+)

优点:比拦截URL使用更方便,效率更高

缺点:必须等到页面加载完成才能实现OC调用JS

(3).WKScriptMessageHandler (仅适用于 WKWebView,iOS8+)

WKWebView有两个代理,一个是navigationDelegate,负责页面跳转相关,另一个是UIDelegate,负责UI事件相关。

(4).WebViewJavaScriptBridge (都适用)

使用简单,就是在OC环境和Javascript环境各自保存一个相互调用的bridge对象,每一个调用之间都有id和callbackid来找到两个环境对应的处理。但是这个框架本身有bug,好在已经有解决办法,只是作者一直没有更新。WebViewJavaScriptBridge的天然坑

2.userAgent

一般会在本身的userAgent基础上拼接一些会经常用到的信息,比如平台(ios,android),用户id等

NSString *userAgent = [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];//取出系统的userAgent

[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent" : customUserAgent}];//替换成自定义的userAgent

3.WKWebview

优点:更多的支持H5特性,更流畅(高达60fps的刷新率),内置手势,增加了加载的进度属性,更细致的代理。

缺点:WKWebView的坑(白屏问题,cookie问题,不支持URLProtocal拦截)

4.iOS与web交互的问题

ios web 交互的问题

你可能感兴趣的:(iOS 与web交互相关小结)