欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

h5和ios混合開發(fā),ios和h5交互

移動(dòng)端app開發(fā),原生開發(fā)與混合開發(fā)的區(qū)別?

原生開發(fā)

桂陽(yáng)網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,桂陽(yáng)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為桂陽(yáng)千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的桂陽(yáng)做網(wǎng)站的公司定做!

?原生開發(fā)是在Android、IOS移動(dòng)平臺(tái)上利用各自的開發(fā)語(yǔ)言、開發(fā)API、開發(fā)工具進(jìn)行App軟件開發(fā)。例如Android是利用Java或者kotlin,使用Eclipse、Android studio、idea等工具開發(fā);IOS是利用Objective-C或者Swift,使用Xcode工具等進(jìn)行開發(fā)。

原生開發(fā)的優(yōu)點(diǎn):

可訪問(wèn)手機(jī)所有功能(如GPS、攝像頭等)、可實(shí)現(xiàn)功能齊全;

運(yùn)行速度快、性能高,絕佳的用戶體驗(yàn);

支持大量圖形和動(dòng)畫,不卡頓,反應(yīng)快;

比較快捷地使用設(shè)備端提供的接口,處理速度上有優(yōu)勢(shì)。

原生開發(fā)的缺點(diǎn):

開發(fā)周期長(zhǎng); ?

制作費(fèi)用高昂,成本較高; ?

可移植性比較差,一款原生的App,Android和IOS都要各自開發(fā),同樣的邏輯、界面要寫兩套; ?

內(nèi)容限制(App ? Store限制); ?

獲得新版本時(shí)需重新下載應(yīng)用更新。

混合開發(fā)

混合開發(fā),是指在開發(fā)一款A(yù)pp產(chǎn)品的時(shí)候,為了提高效率、節(jié)省成本而利用原生與H5的開發(fā)技術(shù)的混合應(yīng)用。通俗點(diǎn)來(lái)說(shuō),這就是網(wǎng)頁(yè)的模式,通常由“H5云網(wǎng)站+APP應(yīng)用客戶端”;兩部分構(gòu)成。

混合開發(fā)是一種取長(zhǎng)補(bǔ)短的開發(fā)模式,原生代碼部分利用插件或者其它框架為H5提供容器,程序主要的業(yè)務(wù)實(shí)現(xiàn)、界面展示都是利用與H5相關(guān)的技術(shù)進(jìn)行實(shí)現(xiàn)的。很多APP都是利用混合開發(fā)模式而成的。 ?

混合開發(fā)優(yōu)點(diǎn):

開發(fā)效率高,節(jié)約時(shí)間。同一套代碼Android和IOS基本上都可使用; ?

更新和部署比較方便,每次升級(jí)版本只需要在服務(wù)器端升級(jí)即可,不再需要上傳到App ? Store進(jìn)行審核; ?

代碼維護(hù)方便、版本更新快,節(jié)省產(chǎn)品成本; ?

比web版實(shí)現(xiàn)功能多; ?

可離線運(yùn)行。?

混合開發(fā)缺點(diǎn): ?

網(wǎng)絡(luò)要求高:混合APP數(shù)據(jù)需要全部從服務(wù)器調(diào)取,每個(gè)頁(yè)面都需要重新下載,因此打開速度慢,網(wǎng)絡(luò)占用高,緩沖時(shí)間長(zhǎng),容易讓用戶反感。 ?

H5調(diào)用Android和ios原生方法(react)

混合開發(fā)中需要web需要和原生交互方式。

原生需要寫方法來(lái)讓H5調(diào)用,H5在window中獲取方法。

ios殼中方法全部放在webkit.messageHandlers對(duì)象中,前端調(diào)用只需要

Android中調(diào)用方法,直接在window中調(diào)用安卓給的對(duì)象

H5調(diào)用原生方法后,原生怎么回調(diào)給H5?

跟原生一樣,H5需要寫好方法,讓原生調(diào)用,這里調(diào)用就是原生直接調(diào)用了H5的方法,當(dāng)然這個(gè)方法是要全局的方法,在window對(duì)象中的。

在react中寫原生調(diào)用的方法,需要在調(diào)用的組件中componentDidMount里面添加方法:

原生方法可能多個(gè)地方使用,每次都去判斷系統(tǒng),然后分別調(diào)用不同方法很麻煩,不是前端該有范兒。應(yīng)該在一個(gè)文件中統(tǒng)一處理,其他頁(yè)面只需要調(diào)用處理好的方法就好。

例如獲取當(dāng)前設(shè)備號(hào),原生封裝好方法后,統(tǒng)一在一個(gè)文件中處理:

這樣在其他頁(yè)面就可以直接使用getDeviceId就可以得到得到設(shè)備號(hào),才不管你是哪個(gè)系統(tǒng)呢。

APP原生開發(fā)和H5開發(fā)以及APP混合開發(fā)三者有什么區(qū)別?

這個(gè)如果詳細(xì)說(shuō),那就是很復(fù)雜了,但是可以以口語(yǔ)方式簡(jiǎn)單的說(shuō)

APP原生開發(fā):就是安卓版,IOS版,和后臺(tái),最起碼為3個(gè)人制作,3個(gè)不同的人掌握不同的技術(shù),也就是說(shuō),這個(gè)成本最高。

H5開發(fā):就是HTML5的網(wǎng)頁(yè)制作,也可以理解為網(wǎng)頁(yè)制作,然后加個(gè)殼打包,這個(gè)殼和打包對(duì)于外行也是比較模糊的概念,你只需要理解為最簡(jiǎn)單的html5制作就行,這個(gè)沒(méi)有什么技術(shù)含量,也最便宜。一個(gè)人可以搞定。

APP混合開發(fā):這個(gè)是介于原生開發(fā)和H5開發(fā)之間的,難度也是居中,相對(duì)來(lái)說(shuō),技術(shù)上由2個(gè)人完成,一個(gè)前臺(tái)一個(gè)后臺(tái),APP上有H5的制作內(nèi)容,也有原生開發(fā)的制作內(nèi)容,所以叫混合開發(fā),或者說(shuō)也有WEB開發(fā)的痕跡,這個(gè)是不能一句話說(shuō)清楚的。

從價(jià)格來(lái)說(shuō)這樣排列:最貴原生開發(fā),居中混合開發(fā),最便宜H5開發(fā)。

iOS和h5交互(WKWebView,UIWebView)

app 混合開發(fā)場(chǎng)景中 常常涉及到h5 和原生數(shù)據(jù)通信,大致分為2類 一個(gè)是 原生 向 h5 主動(dòng)通信,一個(gè)是 h5 主動(dòng)向 原生通信。

iOS 中加載h5的 控件有2種,UIWebView 和 WKWebView,目前新提交的app 必須使用WKWebView 才能提交審核。已經(jīng)上架審核成功的app 目前沒(méi)有強(qiáng)制要求必須用WKWebView。

原生通過(guò)監(jiān)聽url 變化實(shí)現(xiàn),當(dāng)url 變化的時(shí)候 ,會(huì)觸發(fā)

h5 主要邏輯如下

除了 通過(guò)url 變化 的監(jiān)聽外,我們還有其他方法,比如通過(guò) JSContext 向webView 注入。具體步驟如下

原生邏輯:

第一步:新建1個(gè)繼承 JSExport 的 代理 ,新建1個(gè)繼承該協(xié)議的類,協(xié)議中 opencame 為和 前端約定好的 通訊方法

第二步:webview 加載成功后 ,在 - (void)webViewDidFinishLoad:(UIWebView *)webView 注入,注入對(duì)象名稱 為 cth5bridge

第三步:h5 調(diào)用方式如下,cth5bridge 為注入對(duì)象名稱,opencame 為 約定的方法

假設(shè)1個(gè)場(chǎng)景,用戶訪問(wèn)h5 界面情況下,我們要通知 用戶token 要更新

原生主要邏輯

h5 主要邏輯

假設(shè)1個(gè)場(chǎng)景,用戶點(diǎn)擊1個(gè)活動(dòng)baner,通知原生 以一個(gè)新的界面 打開1個(gè)外部活動(dòng)h5界面

和上面類似,我們也可以在 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler 通過(guò)監(jiān)聽 url 變化來(lái)實(shí)現(xiàn)

原生主要邏輯

h5 主要邏輯

我們也可以這么做

第一步 原生 注冊(cè) 監(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è)場(chǎng)景 通知H5 刷新用戶token

updatetoken 是和前端H5 約定好的 通信方法,123是傳遞的數(shù)據(jù),一般 以 json 字符串傳遞

原生主要邏輯

H5主要邏輯

需要在windows 上 綁定方法

參考鏈接:

H5端與原生混合開發(fā)遇到的一些問(wèn)題

在與原生安卓/IOS實(shí)現(xiàn)混合開發(fā)時(shí),會(huì)遇到一些問(wèn)題,在此做下記錄(以下是目前遇到的或之前有記錄到的一些問(wèn)題,后續(xù)如果有遇到新的問(wèn)題或整理過(guò)程中發(fā)現(xiàn)其他的一些問(wèn)題再補(bǔ)上):

1.H5頁(yè)面撥打電話問(wèn)題

(1)在移動(dòng)端頁(yè)面實(shí)現(xiàn)時(shí),只需使用a標(biāo)簽,a href="tel:1234567"即可實(shí)現(xiàn)。

(2)與原生混合開發(fā)時(shí),安卓端嵌入我們的H5頁(yè)面,采用以上方式卻無(wú)法實(shí)現(xiàn),(IOS端是沒(méi)有問(wèn)題的),因此需要調(diào)用原生本地的撥打電話方法。

2.IOS時(shí)間的一個(gè)兼容性問(wèn)題

H5頁(yè)面實(shí)現(xiàn)過(guò)程中遇到了時(shí)間處理的問(wèn)題。使用new Date(time).getDay()的時(shí)候,正常返回應(yīng)該的是0-6,對(duì)應(yīng)每周的星期日到星期一,但在IOS上,例如:我們使用的是(2018-6-4)的話,它會(huì)返回undefined。因此我們?cè)谶@里應(yīng)該對(duì)這個(gè)時(shí)間格式進(jìn)行處理,將其改為(2018/6/4)的格式去獲取。

即:new Date("2018-06-04").replace(/-/g ,"/");

名稱欄目:h5和ios混合開發(fā),ios和h5交互
文章地址:http://chinadenli.net/article41/dsejhed.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站設(shè)計(jì)網(wǎng)站制作定制網(wǎng)站網(wǎng)站導(dǎo)航全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化