搜尋
首頁web前端H5教程html5喚起app的方法

html5喚起app的方法

May 25, 2018 pm 03:58 PM
h5html5

h5喚起app這種需求是常見的。在移動為王的時代,h5在app導流上扮演著重要的角色。目前我們採用的喚起方式是url scheme(iOS,Android平台都支援),只需原生APP開發時註冊scheme, 那麼用戶點擊到此類連結時,就會自動跳到APP。

三種喚起方案

iframe

var last = Date.now(),
    doc = window.document,
    ifr = doc.createElement('iframe');

//创建一个隐藏的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 == &#39;function&#39;) {
            onFail();
        } else {
            //弹窗提示或下载处理等
        }
    } else {
        if (typeof onSuccess == &#39;function&#39;) {
            onSuccess();
        }
    }
}, 1000);

iframe方案的喚起原理是: 程式切換到後台時,計時器會被延後(計時器不準的又一種情況)。如果app被喚醒那麼網頁必然就進入了後台,如果使用者從app切回來,那麼時間一般會超過2s;若app沒有被喚起,那麼網頁不會進入後台,setTimeout基本上準時觸發,那麼時間不會超過2s 。

window.location.href直接跳轉

window.location.href = nativeUrl;

a標籤喚起

<a href="nativeUrl">唤起app</a>

三種喚起方案的瀏覽器測試

  1. X表示喚起失敗,√表示喚起成功

  2. 紅色標記表示進入頁面直接喚起,綠色表示人工事件操作後喚起

  3. ios測試機:iphone 6p;android測試機:小米1s

iframe喚起app測試結果

window.location.href喚起app測試結果

a標籤喚起app測試結果

iframe和window.location.href喚起對比

iframe、window.location.href和a標籤喚起三者對比

測試結果分析

首先測試的機型和瀏覽器有限,上述結果僅作參考.

對比iframe喚起和location.href,我們可以發現:

  1. 對於ios來說,location.href跳轉更合適,因為這種方式可以在Safari中成功喚起app。 Safari作為iphone預設瀏覽器其重要性就不用多說了,而對於微信和qq客戶端,ios中這兩種方式都沒有什麼卵用==

  2. 對於Android來說,在進入頁面直接喚起的情況下,iframe和location.href是一樣的,但是如果是事件驅動的喚起,iframe喚起的表現比location.href要更好一點。

  3. 透過測試可以發現,進入頁面直接喚起和事件驅動的喚起,對於許多瀏覽器,兩者的表現是不同的,簡單來說,直接喚起的失敗更多。

透過上述比較分析,Android使用iframe喚起,ios採用window.location.href喚起更合適一點。

進入頁面直接喚起和事件驅動喚起的區別

這兩種喚起場景在Android中有明顯的區別,無論是iframe的方式喚起還是location.href,以小米1s的chrome為例:

<a id="goApp" href="javascript:void(0);">点我打开APP</a>

綁定事件人工驅動喚起:

//成功唤起
window.onload = function () {
    $(&#39;#goApp&#39;).on("click", function () {
        window.lib.callapp("nativeUrl");//iframe
        //window.location.href = nativeUrl;
    });
};

進入頁面直接喚起:

//唤起失败
window.onload = function () {
    window.lib.callapp("nativeUrl");//iframe
    //window.location.href = nativeUrl;
};

綁定事件,js喚起

//唤起失败
window.onload = function () {
    $(&#39;#goApp&#39;).on("click", function () {
        window.lib.callapp("nativeUrl");//iframe
        //window.location.href = nativeUrl;
    });

    $(&#39;#goApp).trigger(&#39;click&#39;);
};

原本我以為$('#goApp).trigger('click');的方式和人工點擊是一樣的,而實際表現是,js觸發事件的表現和頁面直接跳轉一樣無效。

從參考的部落格文章看到Android平台和各個app廠商差異很大,例如Chrome從25及以後就不再支援透過js觸發(非使用者點擊),設定iframe src位址等來觸發scheme跳轉。所以js觸發和直接用戶點擊差異還是很大的,跟音頻播放的限制異曲同工吧。

最後

經過上述的測試和分析,基本上敲定ios用window.location.href的方式喚起比較合適,Android用iframe喚起比較合適。當我們使用iframe喚起時,一般對喚起失敗的處理是直接下載,但是這裡就有一個問題,就是瀏覽器無法檢測到喚起是否成功,即,如果我喚起成功後返回瀏覽器,瀏覽器還是會彈出下載訊息,這個體驗很差。當然我們也需要處理一些成功或失敗的回呼函數,說不定我們的場景只需要喚起而不需要失敗後的下載。

關於使用location.href喚起iphone手機上的原生app,跳轉中間頁的處理方式可能也比當前頁直接處理好一點。

以上內容就是html5喚起app的方法,希望對大家有幫助。

相關推薦:

HTML5的新增了哪些標籤元素

幾個很好用的HTML5行動開發框架

淺談HTML5的未來發展

以上是html5喚起app的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
理解H5:含義和意義理解H5:含義和意義May 11, 2025 am 12:19 AM

H5是HTML5,是HTML的第五個版本。 HTML5提升了網頁的表現力和交互性,引入了語義化標籤、多媒體支持、離線存儲和Canvas繪圖等新特性,推動了Web技術的發展。

H5:可訪問性和網絡標準合規性H5:可訪問性和網絡標準合規性May 10, 2025 am 12:21 AM

無障礙訪問和網絡標準遵循對網站至關重要。 1)無障礙訪問確保所有用戶都能平等訪問網站,2)網絡標準遵循提高網站的可訪問性和一致性,3)實現無障礙訪問需使用語義化HTML、鍵盤導航、顏色對比度和替代文本,4)遵循這些原則不僅是道德和法律要求,還能擴大用戶群體。

HTML中的H5標籤是什麼?HTML中的H5標籤是什麼?May 09, 2025 am 12:11 AM

HTML中的H5標籤是第五級標題,用於標記較小的標題或子標題。 1)H5標籤幫助細化內容層次,提升可讀性和SEO。 2)結合CSS可定製樣式,增強視覺效果。 3)合理使用H5標籤,避免濫用,確保內容結構邏輯性。

H5代碼:Web結構的初學者指南H5代碼:Web結構的初學者指南May 08, 2025 am 12:15 AM

HTML5構建網站的方法包括:1.使用語義化標籤定義網頁結構,如、、等;2.嵌入多媒體內容,使用和標籤;3.應用表單驗證和本地存儲等高級功能。通過這些步驟,你可以創建一個結構清晰、功能豐富的現代網頁。

H5代碼結構:組織內容以實現可讀性H5代碼結構:組織內容以實現可讀性May 07, 2025 am 12:06 AM

通過合理的H5代碼結構可以讓頁面在眾多內容中脫穎而出。 1)使用語義化標籤如、、等組織內容,使結構清晰。 2)通過CSS佈局如Flexbox或Grid控制頁面在不同設備上的呈現效果。 3)實現響應式設計,確保頁面在不同屏幕尺寸上自適應。

H5與較舊的HTML版本:比較H5與較舊的HTML版本:比較May 06, 2025 am 12:09 AM

HTML5(H5)與舊版本HTML的主要區別包括:1)H5引入了語義化標籤,2)支持多媒體內容,3)提供離線存儲功能。 H5通過新標籤和API增強了網頁的功能和表現力,如和標籤,提高了用戶體驗和SEO效果,但需注意兼容性問題。

H5與HTML5:澄清術語和關係H5與HTML5:澄清術語和關係May 05, 2025 am 12:02 AM

H5和HTML5的區別在於:1)HTML5是網頁標準,定義結構和內容;2)H5是基於HTML5的移動網頁應用,適用於快速開發和營銷。

HTML5特徵:H5的核心HTML5特徵:H5的核心May 04, 2025 am 12:05 AM

HTML5的核心特性包括語義化標籤、多媒體支持、表單增強和離線存儲與本地存儲。 1.語義化標籤如、等提高了代碼可讀性和SEO效果。 2.多媒體支持通過和標籤簡化了嵌入媒體內容的過程。 3.表單增強引入了新的輸入類型和驗證屬性,簡化了表單開發。 4.離線存儲和本地存儲通過ApplicationCache和localStorage等提高了網頁性能和用戶體驗。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!