iOS WebViewJavascriptBridge簡單運用方法

前言

嗯阻肿,我先看的是官方GitHub上的Demo丛塌,一臉萌B啊,之后我看標(biāo)哥的Demo算是稍微的懂了一點用法哨坪,雖然我的項目中沒有使用到WebViewJavascriptBridge但是我還是希望自己從標(biāo)哥的demo中獲得的一點理解告訴大家乍楚,讓大家更快的入門嘛届慈!

正文

我用的demo是這個標(biāo)哥的demo,這個demo稍微簡單明確一點臊泌,我就說說我從這里面看的揍拆。
先看下這個的運行圖吧:

模擬器運行圖.png

其實和官方的是差不多的,也是點擊打開博文或者是上邊的getBlogNameFromObjC都是呼啦啦的加上一條博文播揪。
在這里呢我們首先明確一點:
打開博文和刷新webview是OC的button, getBlogNameFromObjC是網(wǎng)頁上的按鈕筒狠,希望官方的demo改改顏色也好吧,搞得我開始以為都是網(wǎng)頁上的按鈕呢雇庙。

OC代碼

其實就是我們ViewDidLoad里面的那么幾行:
前面的加載網(wǎng)頁的我就不說了灶伊,就說兩個registerHander和一個callHander


OC端端口.png

表面意思:register(注冊)了兩個JS可以主動調(diào)用的OC接口聘萨,call(調(diào)用)了一個JS的方法。注意call是主動調(diào)用也就是進入程序就會調(diào)用匈挖。
我們可以在看一在OC的call下面NSLog處打下斷點打印出來的日志:

斷點日志.png

這里面有兩個SEND和兩個RCVD,那么是誰發(fā)出和接受了信息呢舶吗,是我們的OC端。
我們從上向下將检激,第一個SEND, 數(shù)據(jù)是字典的名字標(biāo)哥腹侣,也就是我們的call端口的callHander后面的data數(shù)據(jù)。接受者就是JS端的相應(yīng)的同樣端口名的getUserInfos端口饺律,我貼一下H5也就是JS的代碼

JS端端口代碼.png

后面我會講怎么寫這個JS跺株,現(xiàn)在我們就看交互這一段的東西。JS這邊register了一個同名的getUserInfos里面就是打印和responseCallback(回復(fù))給OC的字典巧颈,標(biāo)哥的用戶名和博客地址袖扛。打印日志里面是在后面RCVD的,因為JS這邊也有一個主動調(diào)用的SEND唇礁,我們的打印會在這個函數(shù)完成之后才調(diào)用娶吞。JS端主動調(diào)用的接口是getUserIdFormObjc,傳遞空給OC妒蛇,OC的 getUserIdFormObjc接受相應(yīng)的信息也就是日志里面2的結(jié)果绣夺。這個函數(shù)回給了JS 用戶名的字典也就是日志里面的3。最后就是最后接收到到的延遲日志4陶耍。

點擊getUserIdFromObjC按鈕

我們點擊一下getUserIdFromObjC按鈕,按鈕日志如下:

點擊網(wǎng)頁按鈕日志.png

JS這邊有一個點擊按鈕的動作泊碑,Call了一個getBlogNameFromObjC的端口,傳遞過去了blogURL網(wǎng)址的字典臭脓。1上面的form js是OC call里面NSLog出來了斷點位置問題腹忽。下面的好多是我自己加的方法,我們只要看OC這邊的registerHandler:getBlogNameFromObjC端口就好了嘹锁,下面判斷之后會給JS了一個字典是博客的名字着裹。就有了日志2。

JS代碼的編寫

我分成四個部分來寫瘤运,就是從空白頁來弄匠题,手打手打但金。
前三個部分都固定的,不同的就是你自定義的名字之類的冷溃。

第一個部分:

<!doctype html>
<html>
    <head>
     <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0", maximum-scale=1.0">
     <style type='text/css'>
          html { font-family:Helvetica; color:#222; }
          h1{ color:steelblue:font-size:24px; margin-top:24px; }
          button{ margin:0 3px 10px; font-size:12px;}
          .logLine{ border-bottom:1px solid #ccc; padding:4px 2px;font-family:courier; font-size:11px;}
       </style>
</head>

<h1>Test</h1>
<script>
     window.onerror = function(err){
log ('window.onerror:'+err)
}

第二部分

function setupWebViewJavascriptBridge(callback){
   if(window.WebViewJavascriptBridge){ return callback(WebViewJavascriptBridge);}
   if(window.WVJBCallbacks){return window.WVJBCallbacks.push(callback);}
    window.WVJBCallbacks =[callback];
    var WVJBIframe =document.createElement('iframe');
    WVJBIframe.style.display='none';
    WVJBIframe.src ='wvjbscheme://__BRIDGE_LOADED__';
   document.documentElement.appendChild(WVJBIframe);
   setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }
}, 0)
      }

第三部分

setupWebViewJavascriptBridge(function(bridge){
var uniqueId = 1
       function log(message, data) {
         var log = document.getElementById('log')
         var el = document.createElement('div')
         el.className = 'logLine'
         el.innerHTML = uniqueId++ + '. ' + message + ':<br/>' + JSON.stringify(data)
         if (log.children.length) {
            log.insertBefore(el, log.children[0])
         } else {
           log.appendChild(el)
         }
       }

第四部分

第四部分也就是上面的 js 模塊代碼了盖淡,只要照著那個格式就可以了凿歼!

總結(jié)

這兩篇簡書我都是照著我完成的道路一步步的關(guān)注的點寫的,可能也會忘記一些細節(jié)的問題或者是沒有遇到答憔,如果讀者遇到了希望能在評論里面和我說明,我們一起進步心俗!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末城榛,一起剝皮案震驚了整個濱河市揪利,隨后出現(xiàn)的幾起案子狠持,更是在濱河造成了極大的恐慌,老刑警劉巖献汗,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件王污,死亡現(xiàn)場離奇詭異昭齐,居然都是意外死亡尿招,警方通過查閱死者的電腦和手機阱驾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丧荐,“玉大人喧枷,你說我怎么就攤上這事∷砩酰” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵忧便,是天一觀的道長。 經(jīng)常有香客問我帽借,道長珠增,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任宜雀,我火速辦了婚禮切平,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辐董。我一直安慰自己悴品,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著苔严,像睡著了一般定枷。 火紅的嫁衣襯著肌膚如雪届氢。 梳的紋絲不亂的頭發(fā)上欠窒,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音退子,去河邊找鬼岖妄。 笑死,一個胖子當(dāng)著我的面吹牛寂祥,可吹牛的內(nèi)容都是我干的荐虐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丸凭,長吁一口氣:“原來是場噩夢啊……” “哼福扬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起惜犀,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铛碑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后虽界,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汽烦,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年浓恳,在試婚紗的時候發(fā)現(xiàn)自己被綠了刹缝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡颈将,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出言疗,到底是詐尸還是另有隱情晴圾,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布噪奄,位于F島的核電站死姚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勤篮。R本人自食惡果不足惜都毒,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碰缔。 院中可真熱鬧账劲,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榛瓮,卻和暖如春铺董,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背禀晓。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工精续, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粹懒。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓驻右,卻偏偏與公主長得像,于是被迫代替她去往敵國和親崎淳。 傳聞我的和親對象是個殘疾皇子堪夭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 問題:你會怎樣撰寫Alexa Voice Service文檔? 幾個大塊如下: 概覽:是什么拣凹、使用基本流程森爽、示例程...
    維京閱讀 462評論 0 0
  • 為表現(xiàn)樣式編碼和實現(xiàn)正確的語義編碼,二者在基本原理上的差別上比較微妙嚣镜。這里給出了一段示例代碼來幫助我們更好的區(qū)別爬迟。...
    DecadeHeart閱讀 847評論 0 0
  • 今天晨讀還是前幾天推薦過的《如何有效閱讀一本書:超實用讀書筆記法》之前是簡單建立閱讀清單卿城。 現(xiàn)在是分享讀書筆記的3...
    剽悍的今天閱讀 342評論 0 2
  • 馬老二是個名不見經(jīng)傳的小導(dǎo)演子房,拍過兩部電影,都沒錢上映娃磺,只放在網(wǎng)絡(luò)上播了播跌捆,也沒什么反響徽职。馬老二大名叫馬偉,...
    南珂有孟閱讀 340評論 0 1