最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

H5如何實(shí)現(xiàn)喚起APP及調(diào)試bug解決

 更新時(shí)間:2023年05月11日 08:29:12   作者:霍格沃茨魔法師  
這篇文章主要為大家介紹了H5如何實(shí)現(xiàn)喚起APP及調(diào)試bug解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言:

為什么我對(duì)這個(gè)突然感興趣呢,是因?yàn)樽罱谧鲂枨蟮臅r(shí)候存在H5收銀臺(tái)喚起vx/jfb app的場(chǎng)景,但在調(diào)試時(shí)總會(huì)有bug(某一個(gè)版本的應(yīng)用無法吊起支付的app),于是有了本篇的了解。

我們平時(shí)最常見的場(chǎng)景就是,在瀏覽器里看見廣告,點(diǎn)擊了廣告,他判斷你你手機(jī)裝了對(duì)應(yīng)APP,那他就會(huì)打開那個(gè)APP,如果沒安裝,他會(huì)幫你跳轉(zhuǎn)到應(yīng)用商店去下載。(沒有人性化的會(huì)直接默默在后臺(tái)給你下載,你完全沒有感知)。

讓我們一起看看是如何從H5跳轉(zhuǎn)到APP的吧~

喚端

喚端技術(shù)我們也稱之為deep link技術(shù)。當(dāng)然,不同平臺(tái)的實(shí)現(xiàn)方式有些不同,一般常見的有這幾種:

分別是:

  • url schema(通用)
  • universal link(ios)
  • App link,chrome intents(android)

url schema

這是一種比較通用的技術(shù),各平臺(tái)的兼容性也很好,他一般由協(xié)議名、路徑、參數(shù)組成。這個(gè)一般是由native開發(fā)的同學(xué)提供,我們前端同學(xué)拿到這個(gè)schema就可以來打開app或app內(nèi)的某個(gè)頁面了。

標(biāo)題
APP微信支付寶淘寶
url schemaweixin://alipay://taobao://

打開方式:

常用的由以下幾種方式:

  • 直接通過window.location.href跳轉(zhuǎn)
window.location.href="zhihu://" rel="external nofollow" 
  • 通過iframe跳轉(zhuǎn)
const iframe = document.createElement('iframe')
ifram.src = 'zhihu://'
dozument.body.appendChild(iframe)
  • 直接使用a標(biāo)簽進(jìn)行跳轉(zhuǎn)
  • 通過js brige來打開
jsb.openWebView = {
 url:'zhihu://'
}

判斷是否成功喚起:

當(dāng)用戶喚起app失敗時(shí),我們希望可以引導(dǎo)用戶去下載,那么我們?cè)趺床拍苤喇?dāng)前app是否喚起成功呢?

我們可以監(jiān)聽當(dāng)前頁面的visibilitychange事件,如果頁面隱藏,則表示喚端成功,否則喚端失敗,跳轉(zhuǎn)到應(yīng)用商店。

ok,來嘗試一下:

首先我手機(jī)上并沒有安裝騰訊微博,所以也就無法喚起,我們讓他跳到應(yīng)用商店對(duì)應(yīng)的應(yīng)用下載頁,這里就用淘寶的下載頁代替一下:

<template>  
  <div class="open_app">  
      <div class="open_app_title">喚端測(cè)試Demo</div>  
      <div class="open_btn" @click="open">打開騰訊微博</div>  
  </div>  
</template>  
<script>  
let timer  
export default {  
    name: 'openApp',  
    methods: {  
        watchVisibility() {  
            window.addEventListener('visibilitychange', () => {  
                // 監(jiān)聽頁面visibility  
                if(document.hidden) {  
                    // 如果頁面隱藏了,則表示喚起成功,這時(shí)候需要清除下載定時(shí)器  
                    clearTimeout(timer)  
                }  
            })  
        },  
        open() {  
            timer = setTimeout(() => {  
              // 沒找到騰訊微博的下載頁,這里暫時(shí)以淘寶下載頁代替  
                window.location.href = '![]()http://apps.apple.com/cn/app/id387682726'  
            }, 3000)  
            window.location.href = 'TencentWeibo://'  
        }  
    }  
}  
</script>  
<style lang="less">  
.open_app_title {  
    font-size: (20/@rem);  
}  
.open_btn{  
    margin-top:(20/@rem);  
    padding:(10/@rem) 0;  
    border-radius: (8/@rem);  
    background: salmon;  
    color: #fff;  
    font-size: (16/@rem);  
}  
</style>

適用性:

url scheme這種方式兼容性好,無論安卓或者ios都能支持,是目前最常用的方式。但從代碼中可以看到明顯的缺點(diǎn):

  • 無法準(zhǔn)確判斷是否成功喚起,因?yàn)檫@本質(zhì)上就是打開一個(gè)鏈接,但不是普通的http鏈接,所以如果用戶沒有安裝對(duì)應(yīng)的app,那么嘗試跳轉(zhuǎn)后在瀏覽器中會(huì)沒有反應(yīng),通過定時(shí)器來引導(dǎo)用戶跳轉(zhuǎn)到對(duì)應(yīng)應(yīng)用商店,但這個(gè)定時(shí)器的事件又沒有準(zhǔn)確值,不同的手機(jī)喚端時(shí)間也不同,我們只能大概的估計(jì)一下他的時(shí)間來實(shí)現(xiàn)....
  • 容易被屏蔽,app很容易就可以攔截掉通過url schema發(fā)起的跳轉(zhuǎn),比如微信內(nèi)經(jīng)常能看到一些屏蔽現(xiàn)象...

以上就是H5如何實(shí)現(xiàn)喚起APP的詳細(xì)內(nèi)容,更多關(guān)于H5如何實(shí)現(xiàn)喚起APP的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 編寫高性能JavaScript(譯)

    編寫高性能JavaScript(譯)

    本文主要關(guān)注V8的性能優(yōu)化,部分內(nèi)容并不適用于所有JS引擎。最后,轉(zhuǎn)載請(qǐng)注明出處
    2014-08-08
  • JavaScript打開客戶端exe文件的代碼

    JavaScript打開客戶端exe文件的代碼

    可以運(yùn)行客戶端exe文件的代碼
    2008-10-10
  • js中區(qū)分深拷貝與淺拷貝的實(shí)戰(zhàn)過程

    js中區(qū)分深拷貝與淺拷貝的實(shí)戰(zhàn)過程

    兩個(gè)對(duì)象A、B,A有數(shù)據(jù)B為空,B復(fù)制了A,我們修改A,如果B中的數(shù)據(jù)跟著變化了,那就是淺拷貝,如果沒有變化,那就是深拷貝,下面這篇文章主要給大家介紹了關(guān)于js中區(qū)分深拷貝與淺拷貝的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 原生態(tài)js,鼠標(biāo)按下后,經(jīng)過了那些單元格的簡(jiǎn)單實(shí)例

    原生態(tài)js,鼠標(biāo)按下后,經(jīng)過了那些單元格的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄鷳B(tài)js,鼠標(biāo)按下后,經(jīng)過了那些單元格的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • javascript web頁面刷新的方法收集

    javascript web頁面刷新的方法收集

    javascript refresh page,頁面刷新實(shí)現(xiàn)代碼。
    2009-07-07
  • js延遲加載的6種方式實(shí)例總結(jié)

    js延遲加載的6種方式實(shí)例總結(jié)

    js的延遲加載有助與提高頁面的加載速度,下面這篇文章主要給大家介紹了關(guān)于js延遲加載的6種方式,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • JS入門必備之八種數(shù)據(jù)類型

    JS入門必備之八種數(shù)據(jù)類型

    Javascript腳本語言同其他語言一樣,有它自身的基本數(shù)據(jù)類型,表達(dá)式和算術(shù)運(yùn)算符及程序的基本程序框架,這篇文章主要給大家介紹了關(guān)于JS中八種數(shù)據(jù)類型的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • js 中的柯里化與反柯里化的基礎(chǔ)概念和用法

    js 中的柯里化與反柯里化的基礎(chǔ)概念和用法

    柯里化是將接受多個(gè)參數(shù)的函數(shù)轉(zhuǎn)換成一系列只接受單個(gè)參數(shù)的函數(shù)的過程,而反柯里化是將柯里化函數(shù)轉(zhuǎn)換成接受多個(gè)參數(shù)的函數(shù)的過程,本文將帶大家理解 js 中的柯里化與反柯里化,需要的朋友可以參考下
    2023-07-07
  • JS基于正則表達(dá)式的替換操作(replace)用法示例

    JS基于正則表達(dá)式的替換操作(replace)用法示例

    這篇文章主要介紹了JS基于正則表達(dá)式的替換操作(replace)用法,結(jié)合具體實(shí)例形式詳細(xì)分析了replace函數(shù)的語法、參數(shù)及具體使用技巧,需要的朋友可以參考下
    2017-04-04
  • TypeScript語法詳解之類型操作的補(bǔ)充

    TypeScript語法詳解之類型操作的補(bǔ)充

    TypeScript最大的一個(gè)特點(diǎn)就是變量是強(qiáng)類型的,也就是說在聲明變量的時(shí)候我們必須給他一個(gè)類型,下面這篇文章主要給大家介紹了關(guān)于TypeScript語法詳解之類型操作的補(bǔ)充,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

青海省| 大余县| 临漳县| 兰考县| 大城县| 卢湾区| 洛南县| 长寿区| 梁河县| 蓝山县| 双城市| 出国| 镇雄县| 和平县| 宝兴县| 永定县| 阿鲁科尔沁旗| 竹北市| 浦江县| 大庆市| 丹巴县| 公主岭市| 宜春市| 巨鹿县| 保山市| 浦东新区| 望都县| 旬邑县| 东丰县| 长岛县| 仲巴县| 天柱县| 林西县| 莒南县| 库车县| 鸡东县| 盘锦市| 淮阳县| 锡林浩特市| 南郑县| 屏东市|