由於工做須要,咱們常常會在自家產品的APP裏開發一些h5的活動的頁面,做爲營收重要的一部分,咱們確定要想盡辦法擴大傳播範圍,因此分享活動是必不可少又是很關鍵的一步,可是不少信息不能直接在外部瀏覽器經過請求獲取,因此咱們須要有一個專門的分享按鈕提供給用戶在外部瀏覽器打開,引導喚醒APP進入頁面,html
URL Scheme是一種協議媒介, 就是應用將其自身」綁定」到一個自定義 URL scheme 上,該 scheme 用於從瀏覽器或其餘應用中啓動本應用,並且通常都有本身的一套路由體系,能夠經過不停的參數到達任意界面ios
標準的格式是web
[scheme:][//host:port][path][?query][#fragment]
固然裏面的特殊字符也須要先進行url編碼,具體怎麼在APP自定義scheme就不屬於這篇文章的範圍,咱們講講瀏覽器是怎麼調用的跨域
<a href="[scheme:][//host:port][path][?query][#fragment]">打開應用</a>
或者動態建立一個隱藏式跳轉,大致流程無非就是幾種瀏覽器
當遇到某些場景下一個方法不能使用的話,就能夠考慮其餘的兼容方案試試了緩存
能成功喚醒APP的前提是,用戶設備上已經安裝了該應用,退一步來講即便沒有安裝也但願能夠引導用戶去下載咱們的APP,可是熟悉上面的方法的話也能知道,他們無法告訴頁面當前是否喚醒成功或者用戶是否安裝過應用,這時候咱們一般會利用一些事件觸發來判斷是否可能的狀況服務器
離開網頁有多種方式。如點擊一個連接,刷新頁面,提交表單,關閉瀏覽器等。.微信
onpagehide 事件有時能夠替代 onunload 事件,但 onunload 事件觸發後沒法緩存頁面。app
object.addEventListener("pagehide", myScript);
瀏覽器
標籤頁被隱藏或顯示的時候會觸發visibilitychange
事件.less
document.addEventListener("visibilitychange", function() { console.log( document.visibilityState ); });
經過document.hidden屬性,可判斷頁面是否可見。 若是不可見,則document.hidden爲true. 若是可見, 則爲false。
function handleVisibilityChange() { if (document.hidden) { pauseSimulation(); } else { startSimulation(); } } document.addEventListener("visibilitychange", handleVisibilityChange, false);
利用這些事件結合定時器,能夠限定時間內自動觸發下載引導,固然也取決於瀏覽器API兼容性和系統性能等不可控因素
並非全部都支持scheme方法喚醒應用,例如微信瀏覽器等官方對全部的分享連接作了屏蔽,會經過白名單控制是否容許微信內喚醒,如今基本只能在瀏覽器使用.APP都不會但願用戶能夠選擇離開
並且系統或者瀏覽器的支持方式也不同,有些會先詢問用戶是否容許打開應用,有些是直接喚醒
在 iOS 12.3版本之後,safari有一個bug,前後使用scheme和download app會喚醒APP以後再進入App store,用universal link能夠解決這個問題
Seamlessly link to content inside your app, or on your website in iOS 9 or later. With universal links, you can always give users the most integrated mobile experience, even when your app isn’t installed on their device.
iOS 9.0 以上才支持的新特性,能夠經過https連接來打開APP(手機中已經安裝此APP),或者跳轉到https連接(手機中沒有安裝此APP),用戶體驗比scheme卓越,能夠不通過確認框直接喚醒APP,甚至支持在微信喚醒不須要配置白名單.
格式跟普通URL同樣
https://xxx.xxx.xxx/xxx
若是用戶已經安裝過應用則直接喚醒,不然就跳去地址進行下載引導
applinks:
爲前綴apple-app-site-association
文件,文件名必須爲 apple-app-site-association
,不帶任何後綴 .well-known
目錄下在你進行apple-app-association 以及 App工程的配置以後,整個Universal Link的運做流程徹底由系統控制了
跳轉到應用寶後會自動根據設備是否已裝APP去執行打開或者下載操做,固然APP得是上傳到應用寶才行,並且只能是騰訊系的APP才支持,若是是其餘的應用依然是隻能走瀏覽器引導