發(fā)布時間:2023-04-27 21:27:10
稿源:
創(chuàng)意嶺 閱讀:
281
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于h5與原生交互的幾種方式的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀企業(yè),服務(wù)客戶遍布全國,設(shè)計相關(guān)業(yè)務(wù)請撥打175-8598-2043,或微信:1454722008R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
本文目錄:R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
一、iOS和h5交互(WKWebView,UIWebView)R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
app 混合開發(fā)場景中 常常涉及到h5 和原生數(shù)據(jù)通信,大致分為2類 一個是 原生 向 h5 主動通信,一個是 h5 主動向 原生通信。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
iOS 中加載h5的 控件有2種,UIWebView 和 WKWebView,目前新提交的app 必須使用WKWebView 才能提交審核。已經(jīng)上架審核成功的app 目前沒有強制要求必須用WKWebView。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
原生通過監(jiān)聽url 變化實現(xiàn),當url 變化的時候 ,會觸發(fā)R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
h5 主要邏輯如下R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
除了 通過url 變化 的監(jiān)聽外,我們還有其他方法,比如通過 JSContext 向webView 注入。具體步驟如下R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
原生邏輯:R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
第一步:新建1個繼承 JSExport 的 代理 ,新建1個繼承該協(xié)議的類,協(xié)議中 opencame 為和 前端約定好的 通訊方法R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
第二步:webview 加載成功后 ,在 - (void)webViewDidFinishLoad:(UIWebView *)webView 注入,注入對象名稱 為 cth5bridgeR54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
第三步:h5 調(diào)用方式如下,cth5bridge 為注入對象名稱,opencame 為 約定的方法R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
假設(shè)1個場景,用戶訪問h5 界面情況下,我們要通知 用戶token 要更新R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
原生主要邏輯R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
h5 主要邏輯R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
假設(shè)1個場景,用戶點擊1個活動baner,通知原生 以一個新的界面 打開1個外部活動h5界面R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
和上面類似,我們也可以在 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler 通過監(jiān)聽 url 變化來實現(xiàn)R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
原生主要邏輯R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
h5 主要邏輯R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
我們也可以這么做R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
第一步 原生 注冊 監(jiān)聽方法 showH5R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
第二步 H5 調(diào)用 和原生約定好的方法 showH5,h5 處理的時候要區(qū)分 iOS 和 android,下面 只是考慮iOSR54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
第三步 原生在 - (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message 進行監(jiān)聽R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
和上面類似,假設(shè)1個場景 通知H5 刷新用戶tokenR54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
updatetoken 是和前端H5 約定好的 通信方法,123是傳遞的數(shù)據(jù),一般 以 json 字符串傳遞R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
原生主要邏輯R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
H5主要邏輯R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
需要在windows 上 綁定方法R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
參考鏈接: https://blog.csdn.net/dolacmeng/article/details/79623708
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
二、H5與小程序數(shù)據(jù)交互R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
功能已通過原生+vue混合開發(fā)的方式實現(xiàn)了,現(xiàn)需要將這個功能原封不動的搬到微信小程序。綜合各方面評估,選擇了微信小程序套webview的方式實現(xiàn)(若時間允許,建議還是通過小程序?qū)崿F(xiàn))。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
采用小程序webview的方式,可以復(fù)用大部分H5頁面,但H5調(diào)用的原生方法還是需要重新實現(xiàn)。實現(xiàn)方式主要分以下幾種情況(當然也可以通過jssdk的方式去實現(xiàn) https://qydev.weixin.qq.com/wiki/index.php?title=%E5%BE%AE%E4%BF%A1JS-SDK%E6%8E%A5%E5%8F%A3 ,但不在本文討論范圍內(nèi)):R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
(1) 獲取照片,可通過html的input標簽實現(xiàn);R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
(2) 獲取經(jīng)緯度,可通過webview的url拼接參數(shù)實現(xiàn);R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
(3) 人臉識別,可通過H5調(diào)起刷臉小程序的方式實現(xiàn)。 R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
下面主要描述下第3種情況的實現(xiàn)方式。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
H5與小程序交互所涉及的數(shù)據(jù)部分主要包括兩塊:R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
(1)H5如何將數(shù)據(jù)傳給小程序?R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
url參數(shù)拼接。 R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
(2)小程序如何將數(shù)據(jù)傳給H5?R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
wx.setStorage及wx.getStorage。 R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
詳細流程如圖所示。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
webview小程序pageA調(diào)起人臉小程序pageB,pageB回退到pageA。因為pageA重新設(shè)置了webview的url,其所嵌套的H5與歷史H5頁面無法進行數(shù)據(jù)共享,導(dǎo)致業(yè)務(wù)功能無法繼續(xù)。解決辦法就是調(diào)起人臉小程序之前,在H5頁面先將必要的信息通過 localStorage.setItem 保存,人臉識別結(jié)束回到H5頁面時,再通過 localStorage. getItem 獲取所需要的業(yè)務(wù)數(shù)據(jù)。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
三、H5&&Android交互R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
JS調(diào)用Android原生方法,參數(shù)須是Java的內(nèi)置類型:int、String等,若是JavaScript對象,需字符串化,否則Android無法正確接收;R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
JS調(diào)用Android原生方法,返回值是內(nèi)置類型:int、String等,JS能夠正確接收。若是Java自定義類型,則JS接收不到正確數(shù)據(jù);R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
JS可以通過Android原生方法的返回值獲取內(nèi)置類型的參數(shù),如StringR54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
若需要互傳復(fù)雜類型的對象,雙方須以String對媒介,以各自語言的Json工具類進行相互轉(zhuǎn)化;
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
四、h5掉ios原生的方法R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
方法如下:R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
之前也總結(jié)過h5調(diào)用原生的方法,但是寫的不全。像調(diào)完原生之后,原生往往會有返回值,或者根據(jù)返回值的不同回調(diào)h5的方法。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
1.判斷機型。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
2.調(diào)取原生方法之后的回調(diào)方法(回調(diào)的方法名跟原生約定好,你們方法名需一致,譬如此處規(guī)定接收方法為getResult),在created里面注冊一下回調(diào)的方法。
R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
以上就是關(guān)于h5與原生交互的幾種方式相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。R54創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
推薦閱讀:
新媒體h5是什么(h5優(yōu)秀作品欣賞)
h5手游排行榜(h5手游排行榜2019前十名)
H5制作是什么(免費制作h5最常用軟件)
potato官方最新版本下載蘋果(potato官方下載蘋果版下載)
國風咖啡vi設(shè)計(國風主題咖啡)