濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 淺談Html5頁(yè)面打開app的一些思考

淺談Html5頁(yè)面打開app的一些思考

熱門標(biāo)簽:拓展地圖標(biāo)注 高德地圖標(biāo)注地點(diǎn)糾錯(cuò) 電話機(jī)器人電銷系統(tǒng)掙話費(fèi) 電話機(jī)器人黑斑馬免費(fèi) 南昌仁和怎么申請(qǐng)開通400電話 如何獲取地圖標(biāo)注客戶 只辦理400電話 平?jīng)龅貓D標(biāo)注位置怎么弄 機(jī)器人外呼系統(tǒng)存在哪些能力

1. 需求

前段時(shí)間開發(fā)項(xiàng)目,遇到了一個(gè)需求,簡(jiǎn)單來(lái)說(shuō),就是我們H5的頁(yè)面有一個(gè)“在App中打開”的按鈕,用戶點(diǎn)擊后,如果用戶已經(jīng)安裝app,則直接打開app,如果用戶沒(méi)有安裝app,那就跳轉(zhuǎn)到下載app的頁(yè)面

首先,在我的認(rèn)知中,H5應(yīng)該是沒(méi)有能力檢測(cè)到某一款app是否有安裝的(如果有小伙伴知道如何檢測(cè),歡迎評(píng)論區(qū)告訴我,感謝?。?,所以我們需要一些技巧來(lái)完成判斷app是否安裝這一過(guò)程。

之后的步驟以安卓手機(jī)為例子介紹,目前ios9版本之后的系統(tǒng)不需要我們H5做這些判斷app是否安裝的流程(ios9之后可以通過(guò)提供一個(gè)通用鏈接(Universal link),做到?jīng)]有安裝app提示打開蘋果應(yīng)用商城,安裝了app則直接跳轉(zhuǎn)打開)

2. 關(guān)于scheme協(xié)議

scheme協(xié)議是一種頁(yè)面內(nèi)跳轉(zhuǎn)協(xié)議,我們可以通過(guò)定制scheme協(xié)議,跳轉(zhuǎn)到app中的想要跳轉(zhuǎn)的各個(gè)頁(yè)面。scheme協(xié)議是通過(guò)url的形式進(jìn)行跳轉(zhuǎn)的,所以我們H5也可以通過(guò)這個(gè)url去跳轉(zhuǎn)到app內(nèi)指定頁(yè)面,這就是H5打開app的原理。

scheme的url格式類似: [scheme]://[host]/[path]?[query]

3. H5實(shí)現(xiàn)在App中打開的兩種方法

3.1 單純使用定時(shí)器判斷

這種的方法的思路是,首先把我們要跳轉(zhuǎn)的地址設(shè)置為與原生App同學(xué)一起定義好的scheme的url,之后,設(shè)置一個(gè)定時(shí)器,定時(shí)器里執(zhí)行的邏輯是跳轉(zhuǎn)到下載app頁(yè)面,這樣,如果用戶手機(jī)沒(méi)有安裝app,就會(huì)在一段時(shí)間后跳轉(zhuǎn)到下載頁(yè)面。

核心代碼如下:(可以使用iframe完成跳轉(zhuǎn),但需要考慮iframe是否在ios等設(shè)備中被允許)

const schemeUrl = 'xxx'
const downloadUrl = 'XXX'
const wait = 500
try {
    location = schemeUrl
    setTimeout(() => {
        location = downloadUrl
    }, wait)
} catch (e) {
    console.error(e)
}

存在的問(wèn)題

上述實(shí)現(xiàn)方案的問(wèn)題是,即使成功跳轉(zhuǎn)到App,原先的H5頁(yè)面也會(huì)在定時(shí)時(shí)間后,跳轉(zhuǎn)到下載頁(yè)面,這樣體驗(yàn)很不好

3.2 使用window的hidden屬性判斷

這個(gè)方法的思路是,如果成功喚起了app,我們的H5頁(yè)面被置于后臺(tái),window.hidden屬性會(huì)變?yōu)閠rue,可以通過(guò)這個(gè)屬性變化來(lái)判斷app有沒(méi)有打開,沒(méi)打開就跳轉(zhuǎn)到下載頁(yè)面,當(dāng)然這里也用到定時(shí)器

核心代碼如下:

function checkOutApp() {
    const schemeUrl = 'xxx'
    const downloadUrl = 'XXX'
    const wait = 1000
    // 是否進(jìn)入后臺(tái)
    const hidden = false
    location = schemeUrl
    // 如果一定時(shí)間內(nèi),頁(yè)面沒(méi)有隱藏,則跳轉(zhuǎn)到下載頁(yè)
    setTimeout(() => {
        if (!hidden) {
            location = downloadUrl
        }
    }, wait)
    // 頁(yè)面可見(jiàn)性變化事件
    document.addEventListener("visibilitychange", function(){
        if (document.hidden) {
            hidden = true
        }
    });
}

存在的問(wèn)題

目前一些安卓瀏覽器,在app存在時(shí),會(huì)首先跳出一個(gè)確認(rèn)框,詢問(wèn)用戶是否打開app,只有用戶同意時(shí),才會(huì)跳轉(zhuǎn)app,如果用戶始終沒(méi)有點(diǎn)擊確認(rèn),最后還是會(huì)跳到下載頁(yè)面,體驗(yàn)不好

4. 一些思考

鑒于上面說(shuō)到的一些問(wèn)題,個(gè)人覺(jué)得可以在交互中增加一個(gè)“去下載頁(yè)面”的交互,如果用戶沒(méi)有安裝app,一定時(shí)間后,首先提示用戶“是否沒(méi)有安裝app,點(diǎn)擊去下載”類似的按鈕,用戶點(diǎn)擊跳轉(zhuǎn)到下載頁(yè)面,這樣會(huì)不會(huì)更好呢。

到此這篇關(guān)于淺談Html5頁(yè)面打開app的一些思考的文章就介紹到這了,更多相關(guān)Html5打開app內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:池州 棗莊 西藏 漯河 青島 永州 遼源 新疆

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談Html5頁(yè)面打開app的一些思考》,本文關(guān)鍵詞  淺談,Html5,頁(yè)面,打開,app,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Html5頁(yè)面打開app的一些思考》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于淺談Html5頁(yè)面打開app的一些思考的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    景谷| 德令哈市| 新兴县| 朝阳区| 右玉县| 漠河县| 张家口市| 大同市| 工布江达县| 嘉荫县| 治多县| 郑州市| 吉林省| 达日县| 通州市| 甘泉县| 嵊州市| 开远市| 浮山县| 永春县| 长沙市| 贵南县| 呼图壁县| 金乡县| 乳源| 新疆| 福海县| 大石桥市| 尚志市| 葵青区| 阳东县| 南陵县| 临西县| 酉阳| 永登县| 云龙县| 虞城县| 湘西| 宽甸| 尚义县| 杭锦后旗|