JS呼叫OC方法(WKWebView)iOS
原生載入控制元件使用的是WKWebView.
1.點選JS某個方法,並傳值給OC原生,原生介面做出響應,使用場景: 點選H5頁面某個按鈕,進入原生介面實現OC方法
直接看程式碼:

此處為JS端實現程式碼給大家粘出來示範一下:

繼續往下看:

2.瀏覽web頁面,傳遞值給JS介面,JS介面通過值判斷處理邏輯, 使用場景: 瀏覽web頁面商品,加入購物車,JS通過OC原生傳遞過去的userId是否為空,來判斷當前app是否登入或未登入,跳轉原生介面登入,已登入,則直接加入購物車
直接放程式碼:

之所以給userId重新賦值,是如果userId為null 那麼傳給JS端,JS說無法判斷,如果userId為null,重新定義為空字串.如果大家有好的建議,可以在下方留言.
同時,這個地方需要注意的是,JS端並不能檢視我們給他傳遞的是什麼值,也無法列印,不清楚什麼問題? 反正,咱們把值傳給他,根據雙方商量好的邏輯,給出判斷,如果正常,那就行了

此處為jJS端獲取傳遞值程式碼實現例項給大家粘出來示範一下

依然是這個協議方法,獲取注入方法名物件,獲取js返回的狀態值.

此處為js端實現程式碼給大家粘出來示範一下

3.在互動中,關於alert (單對話方塊)函式、confirm(yes/no對話方塊)函式、prompt(輸入型對話方塊)函式時,實現代理協議 WKUIDelegate ,則系統方法裡有三個對應的協議方法.大家可以進入WKUIDelegate 協議類裡面檢視.下面具體協議方法實現,也給大家寫出來,以供參考.
話不多說上程式碼:

JS端呼叫confirm函式時,會觸發此方法,通過message可以拿到JS端所傳的資料,在iOS端顯示原生alert得到YES/NO後,通過completionHandler回撥給JS端

JS端呼叫prompt函式時,會觸發此方法,要求輸入一段文字,在原生輸入得到文字內容後,通過completionHandler回撥給JS

喜歡我的收藏、點贊、點關注,謝謝:pray: