H5喚醒APP實現(xiàn)方法及注意點總結
前言
作為前端開發(fā)人員經(jīng)常會有這樣的需求,如果某個用戶安裝了自己的APP就打開APP首頁或則指定頁面,如果沒有安裝APP就跳轉到相應下載頁面。這樣的一個需求也是拉新和裂變必不可少的環(huán)節(jié),所以是需要我們去解決的。今天來看看到底如何實現(xiàn)呢?
跳轉APP方式
目前實現(xiàn)該功能的有兩種比較好的方式:URL Scheme、meta標簽和Universal Links。
URL Scheme
URL Scheme就是一個可以讓app相互之間可以跳轉的對外接口。通過給APP定義一個唯一的URL路徑來從外部快速的打開這個指定的APP,每個app的URL Scheme都是不一樣的,如果存在一樣的URL Scheme,那么系統(tǒng)就會響應先安裝那個app的URL Scheme,因為后安裝的app的URL Scheme被覆蓋掉了,是不能被調用的。URL scheme的格式是:
[scheme]://[host]/[path]?[query]
介紹幾個常用的URL Scheme平臺:
- QQ: mqq://
- 微信: weixin://
- 騰訊微博: TencentWeibo://
- 淘寶: taobao://
- 支付寶: alipay://
- 微博: sinaweibo://
同時支持Android和iOS平臺
meta標簽
在網(wǎng)頁上設置meta標簽,使用safari打開的時候,就會在頂部顯示自己app的導航條。如果沒有安裝app點擊能夠跳轉到appstore去下載,如果安裝了app就能直接通過頂部的meta標簽喚醒app了。
iOS獨有
Universal Links
Universal Links就是一個通用鏈接,iOS9以上的用戶,可以通過點擊這個鏈接無縫的重定向到一個app應用,而不需要通過safari打開跳轉。如果用戶沒有安裝這個app,則會在safari中打開這個鏈接指向的網(wǎng)頁。
iOS獨有并且是iOS9.0才出的
各種方式的使用
URL Scheme和Universal Links都是需要配置的,只有配置了才能有作用。
URL Scheme使用
URL Scheme的使用方式不難,最簡單的使用方式就是添加一個a標簽鏈接即可:
<a href="weixin://" rel="external nofollow" >打開微信</a>
這種方式訪問是比較簡單的,安卓和IOS都可以使用,但是在微信端就不行了,微信端設置了白名單,完全屏蔽了URL Scheme 用法,除非加入了白名單,像京東就可以直接打開,否則是不可能的。
meta標簽使用
meta標簽的方式也很簡單只需要在網(wǎng)頁中添加meta標簽即可:
<meta charset="UTF-8" name="apple-itunes-app" content="app-id=7777777, affiliate-data=myAffiliateData, app-argument=yourScheme://">
效果就是在網(wǎng)頁的頂部顯示一個置頂條。
Universal Links使用
這種方式配置有點麻煩,本人也沒有接觸過iOS的開發(fā)所以就給大家一個官方網(wǎng)站的介紹了
總結
上面的每一種方式都不能完美的解決,要么只有蘋果支持,要么會有很多頭部APP限制,所以需要自己來做很多其它工作才能適配。
首先我們要確認采取哪一種方式,綜合以上介紹唯有第一種URL Scheme的方式應該是算是最優(yōu)的選擇了畢竟兩個平臺都支持,接下倆就是如何解決在頭部APP里面如何打開,其實這個問題通常都是提示用戶在外部瀏覽器中打開,所以這樣基本就解決了這個難題,下面就用代碼來一步步實現(xiàn)。
實現(xiàn)喚醒APP功能
提示瀏覽器打開
首先需要實現(xiàn)一個在瀏覽器打開的小提示如下:
實現(xiàn)判斷頭部APP的功能
這里就是通過瀏覽器的User-Agent來判斷是否為微信或則其它APP瀏覽器,代碼如下:
/** * 判斷瀏覽器是否為頭部APP */ function isBlackApp() { var u = navigator.userAgent.toLowerCase(); return /micromessenger/i.test(u) || u.indexOf("weibo") > -1 || u.indexOf("qq") > -1 || u.indexOf('mqqbrowser') > -1; }
上面的函數(shù)判斷了幾種瀏覽器,微信、微博、QQ、QQ瀏覽器。如果點擊打開或則下載按鈕時就判斷是否為頭部APP,如果是則提示在瀏覽器打開否則直接打開自己的APP即可,代碼如下:
function openTuer() { if (isBlackApp()) { // 頭部APP讓網(wǎng)頁顯示提示在瀏覽器中打開 showTips(); } else { // 不是頭部APP就直接打開,這里大家開始可以不用參數(shù),后面寫好再來添加即可 openApp(0, 0); } }
喚醒APP的核心方法
上面也提到了openApp這個函數(shù),那么具體是什么樣的呢,這里我們就來看看如何去實現(xiàn)這個函數(shù)。這里按照目前自己的項目需求就是打開APP需要兩個參數(shù)一個是打開APP的某一個頁面which,一個是打開某個頁面需要的參數(shù)arg。所以我們的openApp函數(shù)才需要兩個參數(shù)。
openApp的實現(xiàn)
openApp這個函數(shù)很簡單就是調用兩個函數(shù)如下:
function openApp(which, arg) { jumpApp("testApp://which=" + which + "&arg=" + arg); noApp(); }
第一個函數(shù)就是負責打開APP的,第二個負責如果沒有打開APP或沒有安裝APP時跳轉的地址處理。
jumpApp的實現(xiàn)
這個函數(shù)的實現(xiàn)要注意iOS8之前是可以使用iframe來實現(xiàn)的,但是之后的就不行了,被蘋果屏蔽了,所以只能通過頁面跳轉了,具體代碼如下:
function jumpApp(t) { try { var e = navigator.userAgent.toLowerCase(), n = e.match(/cpu iphone os (.*?) like mac os/); if (((n = null !== n ? n[1].replace(/_/g, ".") : 0), parseInt(n) >= 9)) { window.location.href = t; } else { var r = document.createElement("iframe"); (r.src = t), (r.style.display = "none"), document.body.appendChild(r); } } catch (e) { window.location.href = t; } }
noApp的實現(xiàn)
noApp的實現(xiàn)也很簡單就是定義一個定時器,如果在某個時間段內沒啥反應就跳轉到指定的下載頁面即可。具體代碼如下:
var timer = null; function noApp() { var t = Date.now(), r = "http://www.tuerapp.com"; timer = setTimeout(function() { return Date.now() - t > 2200 ? (clearTimeout(timer), !1) : !document.webkitHidden && !document.hidden && void (location.href = r); }, 2000); }
到此就實現(xiàn)了基本的功能了,實際過程中可能還有很多問題存在
總結
到此這篇關于H5喚醒APP實現(xiàn)方法及注意點的文章就介紹到這了,更多相關H5喚醒APP方法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JS+CSS實現(xiàn)超漂亮的動態(tài)翻書效果(思路詳解)
我們平常沖浪時是不是看過一些學校高級的錄取通知書,翻開通知書就能看見里面的內容,呈現(xiàn)出逼真的3D效果,本文帶領大家基于JS+CSS實現(xiàn)超漂亮的動態(tài)翻書效果,需要的朋友可以參考下2023-05-05javaScript之split與join的區(qū)別(詳解)
下面小編就為大家?guī)硪黄猨avaScript之split與join的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11httpclient模擬登陸具體實現(xiàn)(使用js設置cookie)
最簡單的方法就是通過得到的cookie定制一個httpclient,感興趣的朋友可以了解下本文2013-12-12js實現(xiàn)動態(tài)添加、刪除行、onkeyup表格求和示例
動態(tài)添加、刪除行想必大家并不陌生,下面為大家介紹通過js是如何實現(xiàn)的,有此需求的朋友可不要錯過了哈2013-08-08