這個(gè)如果詳細(xì)說,那就是很復(fù)雜了,但是可以以口語方式簡單的說
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、明山網(wǎng)絡(luò)推廣、小程序開發(fā)、明山網(wǎng)絡(luò)營銷、明山企業(yè)策劃、明山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供明山建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
APP原生開發(fā):就是安卓版,IOS版,和后臺,最起碼為3個(gè)人制作,3個(gè)不同的人掌握不同的技術(shù),也就是說,這個(gè)成本最高。
H5開發(fā):就是HTML5的網(wǎng)頁制作,也可以理解為網(wǎng)頁制作,然后加個(gè)殼打包,這個(gè)殼和打包對于外行也是比較模糊的概念,你只需要理解為最簡單的html5制作就行,這個(gè)沒有什么技術(shù)含量,也最便宜。一個(gè)人可以搞定。
APP混合開發(fā):這個(gè)是介于原生開發(fā)和H5開發(fā)之間的,難度也是居中,相對來說,技術(shù)上由2個(gè)人完成,一個(gè)前臺一個(gè)后臺,APP上有H5的制作內(nèi)容,也有原生開發(fā)的制作內(nèi)容,所以叫混合開發(fā),或者說也有WEB開發(fā)的痕跡,這個(gè)是不能一句話說清楚的。
從價(jià)格來說這樣排列:最貴原生開發(fā),居中混合開發(fā),最便宜H5開發(fā)。
app 混合開發(fā)場景中 常常涉及到h5 和原生數(shù)據(jù)通信,大致分為2類 一個(gè)是 原生 向 h5 主動通信,一個(gè)是 h5 主動向 原生通信。
iOS 中加載h5的 控件有2種,UIWebView 和 WKWebView,目前新提交的app 必須使用WKWebView 才能提交審核。已經(jīng)上架審核成功的app 目前沒有強(qiáng)制要求必須用WKWebView。
原生通過監(jiān)聽url 變化實(shí)現(xiàn),當(dāng)url 變化的時(shí)候 ,會觸發(fā)
h5 主要邏輯如下
除了 通過url 變化 的監(jiān)聽外,我們還有其他方法,比如通過 JSContext 向webView 注入。具體步驟如下
原生邏輯:
第一步:新建1個(gè)繼承 JSExport 的 代理 ,新建1個(gè)繼承該協(xié)議的類,協(xié)議中 opencame 為和 前端約定好的 通訊方法
第二步:webview 加載成功后 ,在 - (void)webViewDidFinishLoad:(UIWebView *)webView 注入,注入對象名稱 為 cth5bridge
第三步:h5 調(diào)用方式如下,cth5bridge 為注入對象名稱,opencame 為 約定的方法
假設(shè)1個(gè)場景,用戶訪問h5 界面情況下,我們要通知 用戶token 要更新
原生主要邏輯
h5 主要邏輯
假設(shè)1個(gè)場景,用戶點(diǎn)擊1個(gè)活動baner,通知原生 以一個(gè)新的界面 打開1個(gè)外部活動h5界面
和上面類似,我們也可以在 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler 通過監(jiān)聽 url 變化來實(shí)現(xiàn)
原生主要邏輯
h5 主要邏輯
我們也可以這么做
第一步 原生 注冊 監(jiān)聽方法 showH5
第二步 H5 調(diào)用 和原生約定好的方法 showH5,h5 處理的時(shí)候要區(qū)分 iOS 和 android,下面 只是考慮iOS
第三步 原生在 - (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message 進(jìn)行監(jiān)聽
和上面類似,假設(shè)1個(gè)場景 通知H5 刷新用戶token
updatetoken 是和前端H5 約定好的 通信方法,123是傳遞的數(shù)據(jù),一般 以 json 字符串傳遞
原生主要邏輯
H5主要邏輯
需要在windows 上 綁定方法
參考鏈接:
在與原生安卓/IOS實(shí)現(xiàn)混合開發(fā)時(shí),會遇到一些問題,在此做下記錄(以下是目前遇到的或之前有記錄到的一些問題,后續(xù)如果有遇到新的問題或整理過程中發(fā)現(xiàn)其他的一些問題再補(bǔ)上):
1.H5頁面撥打電話問題
(1)在移動端頁面實(shí)現(xiàn)時(shí),只需使用a標(biāo)簽,a href="tel:1234567"即可實(shí)現(xiàn)。
(2)與原生混合開發(fā)時(shí),安卓端嵌入我們的H5頁面,采用以上方式卻無法實(shí)現(xiàn),(IOS端是沒有問題的),因此需要調(diào)用原生本地的撥打電話方法。
2.IOS時(shí)間的一個(gè)兼容性問題
H5頁面實(shí)現(xiàn)過程中遇到了時(shí)間處理的問題。使用new Date(time).getDay()的時(shí)候,正常返回應(yīng)該的是0-6,對應(yīng)每周的星期日到星期一,但在IOS上,例如:我們使用的是(2018-6-4)的話,它會返回undefined。因此我們在這里應(yīng)該對這個(gè)時(shí)間格式進(jìn)行處理,將其改為(2018/6/4)的格式去獲取。
即:new Date("2018-06-04").replace(/-/g ,"/");