
老大讓研究一個(gè)新功能,H5頁(yè)面內(nèi)點(diǎn)擊喚醒APP,開(kāi)始了艱苦的長(zhǎng)途跋涉,一步一個(gè)坑?。?!
1、該如何喚醒APP;
2、如何檢測(cè)是否有APP;
看看前輩們是怎么做的,喚醒APP,研究發(fā)現(xiàn),可以通過(guò)類似于url的形式跳轉(zhuǎn)來(lái)喚醒APP,在原生中被命名為schema協(xié)議,
taobao://m.taobao.com //淘寶的喚醒地址
咦,手機(jī)上有淘寶,地址也配好了,走起試一下(安卓),打開(kāi)了,以為全世界都亮了,才發(fā)現(xiàn)只是一點(diǎn)星星之火,借鑒前輩們的解決方案,發(fā)現(xiàn)不能檢測(cè)到手機(jī)內(nèi)有沒(méi)有安裝APP,喚醒存在各種兼容性問(wèn)題,主流的使用兩種方法,核心思想是點(diǎn)擊喚醒按鈕,進(jìn)行跳轉(zhuǎn),如果能進(jìn)行跳轉(zhuǎn)則跳轉(zhuǎn),否則跳轉(zhuǎn)到下載頁(yè)面。
1、動(dòng)態(tài)創(chuàng)建iframe標(biāo)簽 (安卓解決方案)
var ifa = document.creatElement('iframe');
ifa.src = url; //APP的schema協(xié)議
ifa.style.display = 'none';
setTimeout(function(){
document.body.removeChild(ifa);
window.location.href = 'download.html' //APP下載頁(yè)
},1000)
通過(guò)動(dòng)態(tài)生成iframe標(biāo)簽的這種方案,在ios9+里沒(méi)有響應(yīng);
2、window.location.href跳轉(zhuǎn) (IOS解決方案)
window.location.href = url; //APP的schema協(xié)議
setTimeout(function(){
window.location.href = 'download.html' //APP下載頁(yè)
},2000)
IOS系統(tǒng)上安裝APP,提示彈框,打開(kāi)APP,當(dāng)手機(jī)里未下載APP,safari會(huì)提示錯(cuò)誤鏈接,默認(rèn)2秒后跳轉(zhuǎn)下載頁(yè)(系統(tǒng)彈框無(wú)法避免);
當(dāng)切換到app返回到H5頁(yè)面發(fā)現(xiàn)仍然跳轉(zhuǎn)到了下載頁(yè)面,該怎么辦
visibilitychange H5新出的接口 判斷頁(yè)面狀態(tài) 主要是為了游戲開(kāi)發(fā)人員,在我們玩游戲的過(guò)程中,我們會(huì)因?yàn)樾畔?、電話等?wèn)題退出游戲頁(yè)面,使其進(jìn)入后臺(tái),這個(gè)時(shí)候判斷進(jìn)入此狀態(tài),暫停游戲。目前除了safari不支持,其他瀏覽器都支持。
https://developer.mozilla.org/zh-CN/docs/Web/Events/visibilitychange API文檔
document.addEventListener('visibilitychange webkitvisibilitychange',function(){
var tag = document.hidden || document.webkitHidden;
tag ? clearTimeout(timer):'';
})
window.onpagehide = function(){
clearTimeout(timer);
}
微信內(nèi)不能喚醒APP的,微信將schema協(xié)議進(jìn)行屏蔽,只對(duì)合作伙伴進(jìn)行白名單開(kāi)放.
寫(xiě)的不好的地方還望大家及時(shí)反饋與糾正,本著共同學(xué)習(xí)與進(jìn)步宗旨不斷前進(jìn)?。?!