如果要做抄網站封裝APP的話,其襲實非常簡單的,網上很多開發者服務平台都有這個功能,操作非常簡單,基本上一分鍾不到就可以封裝好。
在亥著開發者中心找到【產品概覽】-【封裝APP】
『貳』 App與Js交互(一)iOS
Demo: https://github.com/gwpp/jsinterface
不論是在創業團隊中快速試錯,還是在成熟團隊中快速迭代復雜需求,還或者是其他原因,WebView在APP中的大量使用已經成為了一個明顯的趨勢,這也應該算是大前端融合的一個表象吧。筆者在工作中也遇到過很多App&Js交互的問題,粗淺的研究了一下,這里也分享給大家,如果有錯誤的地方還請下方留言指出,共同進步。
眾所周知,iOS有 UIWebView 、 WKWebView 兩個組件可以用來渲染嵌入頁面。前者使用甚廣,出生的也早,後者是iOS8推出的,優化了載入速度和內存,安全性上也有所提升。具體的兩者比較網路、上都很多,這里不做贅述。
前兩種方法到此就介紹完了,很簡單,但是在項目大了之後攔截跳轉的代理方法中會有非常多的判斷。冗餘、可維護性差,硬編碼重。所以我們會有下面的其他方法。
JSContext即JavaScriptContext,這個東西在UIWebView中可以拿到,但是在WKWebView中卻是取不到了,所以只能用在UIWebView中。除此以外Android里也有類似的一個東西,所以使用JSContext就有了在JS端多平台統一的可能,這里不多說,在《App與Js交互(三)》中會有詳細說明。
JSContext的原理就是iOS暴露出去一個遵守 <JSExport> 協議的對象給JS,JS可以直接調用該對象的public方法。
window.webkit.messagehandlers.<name>.postMessage 是apple推薦使用的WKWebView的JS交互方式,使用起來比較簡單,不支持callback回調。