iOS 與web交互相關(guān)小結(jié)

1.iOS與web交互的四種方式

(1).攔截URL(都適用)

優(yōu)點(diǎn):兼容性最好的方式,iOS7之前的只能使用這種方式,不需要等到頁(yè)面加載完就能實(shí)現(xiàn)OC調(diào)用JS或JS調(diào)用OC

缺點(diǎn):需要頻繁的解釋字符串得到相應(yīng)的方法名和傳值,且調(diào)用的方法也不能進(jìn)行回調(diào)傳值。

(2).JavaScriptCore (僅適用于UIWebView,iOS7+)

優(yōu)點(diǎn):比攔截URL使用更方便,效率更高

缺點(diǎn):必須等到頁(yè)面加載完成才能實(shí)現(xiàn)OC調(diào)用JS

(3).WKScriptMessageHandler (僅適用于 WKWebView,iOS8+)

WKWebView有兩個(gè)代理,一個(gè)是navigationDelegate,負(fù)責(zé)頁(yè)面跳轉(zhuǎn)相關(guān),另一個(gè)是UIDelegate,負(fù)責(zé)UI事件相關(guān)。

(4).WebViewJavaScriptBridge (都適用)

使用簡(jiǎn)單,就是在OC環(huán)境和Javascript環(huán)境各自保存一個(gè)相互調(diào)用的bridge對(duì)象,每一個(gè)調(diào)用之間都有id和callbackid來(lái)找到兩個(gè)環(huán)境對(duì)應(yīng)的處理。但是這個(gè)框架本身有bug,好在已經(jīng)有解決辦法,只是作者一直沒(méi)有更新。WebViewJavaScriptBridge的天然坑

2.userAgent

一般會(huì)在本身的userAgent基礎(chǔ)上拼接一些會(huì)經(jīng)常用到的信息,比如平臺(tái)(ios,android),用戶id等

NSString *userAgent = [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];//取出系統(tǒng)的userAgent

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

3.WKWebview

優(yōu)點(diǎn):更多的支持H5特性,更流暢(高達(dá)60fps的刷新率),內(nèi)置手勢(shì),增加了加載的進(jìn)度屬性,更細(xì)致的代理。

缺點(diǎn):WKWebView的坑(白屏問(wèn)題,cookie問(wèn)題,不支持URLProtocal攔截)

4.iOS與web交互的問(wèn)題

ios web 交互的問(wèn)題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容