小編給大家分享一下h5喚醒a(bǔ)pp的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)專(zhuān)注于洛浦企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城開(kāi)發(fā)。洛浦網(wǎng)站建設(shè)公司,為洛浦等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)h6喚起app這種需求是常見(jiàn)的。在移動(dòng)為王的時(shí)代,h6在app導(dǎo)流上發(fā)揮著重要的作用。
三種喚起方案
目前我們采用的喚起方式是url scheme(iOS,Android平臺(tái)都支持),只需原生APP開(kāi)發(fā)時(shí)注冊(cè)scheme, 那么用戶(hù)點(diǎn)擊到此類(lèi)鏈接時(shí),會(huì)自動(dòng)跳到APP。
var last = Date.now(), doc = window.document, ifr = doc.createElement('iframe'); //創(chuàng)建一個(gè)隱藏的iframe ifr.src = nativeUrl; ifr.style.cssText = 'display:none;border:0;width:0;height:0;'; doc.body.appendChild(ifr); setTimeout(function() { doc.body.removeChild(ifr); //setTimeout回小于2000一般為喚起失敗 if (Date.now() - last < 2000) { if (typeof onFail == 'function') { onFail(); } else { //彈窗提示或下載處理等 } } else { if (typeof onSuccess == 'function') { onSuccess(); } } }, 1000);
iframe方案的喚起原理是: 程序切換到后臺(tái)時(shí),計(jì)時(shí)器會(huì)被推遲(計(jì)時(shí)器不準(zhǔn)的又一種情況)。如果app被喚醒那么網(wǎng)頁(yè)必然就進(jìn)入了后臺(tái),如果用戶(hù)從app切回來(lái),那么時(shí)間一般會(huì)超過(guò)2s;若app沒(méi)有被喚起,那么網(wǎng)頁(yè)不會(huì)進(jìn)入后臺(tái),setTimeout基本準(zhǔn)時(shí)觸發(fā),那么時(shí)間不會(huì)超過(guò)2s。
window.location.href直接跳轉(zhuǎn)
window.location.href = nativeUrl;
a標(biāo)簽喚起
喚起app
對(duì)比iframe喚起和location.href,我們可以發(fā)現(xiàn):
對(duì)于ios來(lái)說(shuō),location.href跳轉(zhuǎn)更合適,因?yàn)檫@種方式可以在Safari中成功喚起app。Safari作為iphone默認(rèn)瀏覽器其重要性就不用多說(shuō)了,而對(duì)于微信和qq客戶(hù)端,ios中這兩種方式都沒(méi)有什么卵用==
對(duì)于A(yíng)ndroid來(lái)說(shuō),在進(jìn)入頁(yè)面直接喚起的情況下,iframe和location.href是一樣的,但是如果是事件驅(qū)動(dòng)的喚起,iframe喚起的表現(xiàn)比location.href要更好一點(diǎn)。
通過(guò)測(cè)試可以發(fā)現(xiàn),進(jìn)入頁(yè)面直接喚起和事件驅(qū)動(dòng)的喚起,對(duì)于很多瀏覽器,兩者的表現(xiàn)是不同的,簡(jiǎn)單來(lái)說(shuō),直接喚起的失敗更多。
通過(guò)上述對(duì)比分析,Android使用iframe喚起,ios采用window.location.href喚起更合適一點(diǎn)。
看完了這篇文章,相信你對(duì)h5喚醒a(bǔ)pp的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,感謝各位的閱讀!