開發(fā)經典 | iOS與HTML5交互方法總結

摘要

看了不少別人寫的博客或者論壇磺送,關于iOS與HTML5交互方法大概主要有5種方式:

利用WKWebView進行交互(系統(tǒng)API)

利用UIWebView進行交互(系統(tǒng)API)

蘋果的javascriptcore.framework框架;?

跨平臺cordova框架;

oc第三方WebViewJavascriptBridge

今天主要介紹前兩種摄悯,后三種大家有興趣的自己查看資料泥畅。

在這里我還是要推薦下我自己建的iOS開發(fā)學習群:680565220役耕,群里都是學ios開發(fā)的枫笛,如果你正在學習ios ,小編歡迎你加入往枣,今天分享的這個案例已經上傳到群文件进胯,大家都是軟件開發(fā)黨用爪,不定期分享干貨(只有iOS軟件開發(fā)相關的),包括我自己整理的一份2018最新的iOS進階資料和高級開發(fā)教程

下面我們來介紹第一種方式:

01

利用WKWebView進行交互

通過本篇文章胁镐,至少可以學習到:

1. OC如何給JS注入對象及JS如何給iOS發(fā)送數據

2. JS調用alert偎血、confirm、prompt時盯漂,不采用JS原生提示颇玷,而是使用iOS原生來實現

3. 如何監(jiān)聽web內容加載進度、是否加載完成

4. 如何通過js來跳轉到iOS指定的頁面上

如何處理去跨域問題

創(chuàng)建配置類

在創(chuàng)建WKWebView之前就缆,需要先創(chuàng)建配置對象帖渠,用于做一些配置:?

配置偏好設置

偏好設置也沒有必須去修改它,都使用默認的就可以了违崇,除非你真的需要修改它:?

配置web內容處理池

其實我們沒有必要去創(chuàng)建它阿弃,因為它根本沒有屬性和方法:

web內容處理池,由于沒有屬性可以設置羞延,也沒有方法可以調用渣淳,不用手動創(chuàng)建。

配置Js與Web內容交互

WKUserContentController是用于給JS注入對象的伴箩,注入對象后入愧,JS端就可以使用:

window.webkit.messageHandlers..postMessage()

來調用發(fā)送數據給iOS端,比如:?

AppModel就是我們要注入的名稱嗤谚,注入以后棺蛛,就可以在JS端調用了,傳數據統(tǒng)一通過body傳巩步,可以是多種類型旁赊,只支持NSNumber, NSString, NSDate, NSArray,NSDictionary, and NSNull類型。?

下面我們配置給JS的main frame注入AppModel名稱椅野,對于JS端可就是對象了:?

當JS通過AppModel發(fā)送數據到iOS端時终畅,會在代理中收到:?

所有JS調用iOS的部分,都只可以在此處使用哦竟闪。當然我們也可以注入多個名稱(JS對象)离福,用于區(qū)分功能。

創(chuàng)建WKWebView

加載H5頁面

配置代理

如果需要處理web導航條上的代理處理炼蛤,比如鏈接是否可以跳轉或者如何跳轉妖爷,需要設置代理;而如果需要與在JS調用alert理朋、confirm絮识、prompt函數時,通過JS原生來處理嗽上,而不是調用JS的alert笋除、confirm、prompt函數炸裆,那么需要設置UIDelegate垃它,在得到響應后可以將結果反饋到JS端:?

添加對WKWebView屬性的監(jiān)聽

然后我們就可以實現KVO處理方法,在loading完成時烹看,可以注入一些JS到web中国拇。這里只是簡單地執(zhí)行一段web中的JS函數:?

WKUIDelegate

與JS原生的alert、confirm惯殊、prompt交互酱吝,將彈出來的實際上是我們原生的窗口,而不是JS的土思。在得到數據后务热,由原生傳回到JS:?

WKNavigationDelegate

如果需要處理web導航操作忆嗜,比如鏈接跳轉、接收響應崎岂、在導航開始捆毫、成功、失敗等時要做些處理冲甘,就可以通過實現相關的代理方法:?

JS端代碼

02

利用UIWebView進行交互

大家都知道UIWebView是最常見的SDK,平時項目中我們用的也比較多,它有一個stringByEvaluatingJavaScriptFromString方法可以將JavaScript嵌入頁面中绩卤,通過這個方法我們可以在iOS中與UIWebView中的網頁元素交互.下面就來詳細介紹一下它的具體操作步驟.首先我們來加載一個網頁,看看他的源碼:

創(chuàng)建UIWebView

加載URL

效果圖?

獲取當前頁面的URL

獲取頁面的title

修改HTML元素標簽的值

插入js代碼

提交表單

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市江醇,隨后出現的幾起案子濒憋,更是在濱河造成了極大的恐慌,老刑警劉巖陶夜,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凛驮,死亡現場離奇詭異,居然都是意外死亡条辟,警方通過查閱死者的電腦和手機辐烂,發(fā)現死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捂贿,“玉大人纠修,你說我怎么就攤上這事〕” “怎么了扣草?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵奇颠,是天一觀的道長膛锭。 經常有香客問我,道長仆抵,這世上最難降的妖魔是什么甫窟? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任密浑,我火速辦了婚禮,結果婚禮上粗井,老公的妹妹穿的比我還像新娘尔破。我一直安慰自己,他們只是感情好浇衬,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布懒构。 她就那樣靜靜地躺著,像睡著了一般耘擂。 火紅的嫁衣襯著肌膚如雪胆剧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天醉冤,我揣著相機與錄音秩霍,去河邊找鬼篙悯。 笑死,一個胖子當著我的面吹牛铃绒,可吹牛的內容都是我干的鸽照。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼匿垄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了归粉?” 一聲冷哼從身側響起椿疗,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎糠悼,沒想到半個月后届榄,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡倔喂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年铝条,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片席噩。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡班缰,死狀恐怖,靈堂內的尸體忽然破棺而出悼枢,到底是詐尸還是另有隱情埠忘,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布馒索,位于F島的核電站莹妒,受9級特大地震影響,放射性物質發(fā)生泄漏绰上。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一蜈块、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧百揭,春花似錦、人聲如沸信峻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽产镐。三九已至隘庄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間癣亚,已是汗流浹背丑掺。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留述雾,地道東北人街州。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像玻孟,于是被迫代替她去往敵國和親唆缴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容

  • 前言 上一篇專門講解了WKWebView相關的所有類黍翎、代理的所有API面徽。前篇文章地址:http://blog.cs...
    iwolfox閱讀 1,105評論 1 1
  • 1. 利用 WKWebView 進行交互(系統(tǒng) API) 2. 利用 UIWebView 進行交互(系統(tǒng) API)...
    ElvisSun閱讀 993評論 0 1
  • 前言 Web 頁面中的 JS 與 iOS Native 如何交互是每個 iOS 猿必須掌握的技能。而說到 Nati...
    幽城88閱讀 2,204評論 1 8
  • 想那個姑娘的容顏匣掸, 如天堂趟紊, 又像絕美的人間。 每次她的樣子映入我眼簾碰酝, 我便慶幸得以相見霎匈。 她的靚麗光鮮, 讓我...
    李萬長閱讀 242評論 0 3
  • 在醫(yī)院的走廊送爸,我把200元錢放在他手心的時候唧躲,他低下了頭,深深向我鞠了一個躬碱璃,這一舉動讓我始料未及弄痹。我說,這是我的...
    山風小語閱讀 442評論 3 3