通過(guò)掃描二維碼打開(kāi)app的實(shí)現(xiàn)代碼
最近有朋友問(wèn)小編這樣一個(gè)問(wèn)題,先給大家說(shuō)下項(xiàng)目需求:掃描二維碼打開(kāi)app如果用戶沒(méi)有這個(gè)app則提示它跳轉(zhuǎn)。
用網(wǎng)頁(yè)直接來(lái)調(diào)用app是不打可能的,必須原生那邊先做一些配置。
首先,安卓和蘋(píng)果的調(diào)用方法是不同的。
所以我們需要先判斷一下終端。
var u = navigator.userAgent,
app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android終端或者uc瀏覽器
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
之后最好是分別跳轉(zhuǎn)到兩個(gè)不同的頁(yè)面去做操作,因?yàn)樘O(píng)果需要在頭部配置一個(gè)app-id<meta name='apple-itunes-app' content='app-id=1115968341'>
下面是蘋(píng)果的代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name='apple-itunes-app' content='app-id=1115968341'>
<title></title>
</head>
<body>
<a id="openApp">點(diǎn)擊打開(kāi)</a>
<script type="text/javascript">
//蘋(píng)果
document.getElementById('openApp').onclick = function(e){
// 通過(guò)iframe的方式試圖打開(kāi)APP,如果能正常打開(kāi),會(huì)直接切換到APP,并自動(dòng)阻止a標(biāo)簽的默認(rèn)行為
// 否則打開(kāi)a標(biāo)簽的href鏈接
var ifr = document.createElement('iframe');
ifr.src = 'iosefunbox://';
ifr.style.display = 'none';
document.body.appendChild(ifr);
window.setTimeout(function(){
document.body.removeChild(ifr);
},3000)
};
</script>
</body>
</html>
這里的ifr.src就是你去打開(kāi)app的協(xié)議路徑,安卓和蘋(píng)果是不一樣的。<br><br><br>如果是安卓機(jī)的話就簡(jiǎn)單了
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
</head>
<body>
<a id="openApp">點(diǎn)擊打開(kāi)</a>
<script type="text/javascript">
//安卓
// /**/window.location.;
// 通過(guò)iframe的方式試圖打開(kāi)APP,如果能正常打開(kāi),會(huì)直接切換到APP,并自動(dòng)阻止a標(biāo)簽的默認(rèn)行為
// 否則打開(kāi)a標(biāo)簽的href鏈接
var ifr = document.createElement('iframe');
ifr.src = 'efunbox://efunbox.app/efunbox/open';
ifr.style.display = 'none';
document.body.appendChild(ifr);
window.setTimeout(function(){
document.body.removeChild(ifr);
},3000);
</script>
</body>
</html>
這是我們?cè)鹊男枨?,后?lái)變了,說(shuō)蘋(píng)果直接跳轉(zhuǎn)到appstore里面就好了,不用直接打開(kāi),安卓的話需要直接打開(kāi)。
這樣我就直接把它們集合在一個(gè)網(wǎng)頁(yè)就行。
我上面的a鏈接是直接跳轉(zhuǎn)到騰訊應(yīng)用寶里面。
用網(wǎng)頁(yè)掃描訪問(wèn)的話是沒(méi)問(wèn)題的,
但是我就感覺(jué)會(huì)出事,后來(lái)拿微信掃一掃就蒙逼了。安卓只會(huì)打開(kāi)a鏈接,跳轉(zhuǎn)不進(jìn)app,因?yàn)楸晃⑿艛r截掉了,蘋(píng)果也一樣,解決的方案只能是點(diǎn)擊右上角,提示用戶在瀏覽器打開(kāi)就沒(méi)問(wèn)題。這種方法是無(wú)奈之舉,但后來(lái)針對(duì)蘋(píng)果機(jī)找到了一個(gè)解決它的方案就是,a鏈接的跳轉(zhuǎn)直接跳騰訊應(yīng)用寶上架的鏈接,然后微信內(nèi)部會(huì)處理幫你自動(dòng)跳轉(zhuǎn)到appstore里面。
最后是整合了一下的代碼。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body id="body">
<script type="text/javascript">
var u = navigator.userAgent,
app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android終端或者uc瀏覽器
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
if(isIOS){
window.location.;
}
if(isAndroid){
alert("請(qǐng)點(diǎn)擊右上角在瀏覽器打開(kāi)");
window.location.;
var ifr = document.createElement('iframe');
ifr.src = 'efunbox://efunbox.app/efunbox/open';
ifr.style.display = 'none';
document.body.appendChild(ifr);
window.setTimeout(function(){
document.body.removeChild(ifr);
},3000);
}
</script>
</body>
</html>
補(bǔ)充:
掃描二維碼跳轉(zhuǎn)app
1、判斷是否安裝了app
<html>
<head>
<meta name="viewport" content="width=device-width" />
</head>
<body>
<h2><a id="applink1" href="mtcmtc://profile/116201417">Open scheme(mtcmtc) defined in iPhone with parameters </a></h2>
<h2><a id="applink2" href="unknown://nowhere">open unknown with fallback to appstore</a></h2>
<p><i>Only works on iPhone!</i></p>
<script type="text/javascript">
// To avoid the "protocol not supported" alert, fail must open another app.
var appstore = "itms://itunes.apple.com/us/app/facebook/id284882215?mt=8&uo=6";
function applink(fail){
return function(){
var clickedAt = +new Date;
// During tests on 3g/3gs this timeout fires immediately if less than 500ms.
setTimeout(function(){
// To avoid failing on return to MobileSafari, ensure freshness!
if (+new Date - clickedAt < 2000){
window.location = fail;
}
}, 500);
};
}
document.getElementById("applink1").onclick = applink(appstore);
document.getElementById("applink2").onclick = applink(appstore);
</script>
</body>
</html>
2、打開(kāi)項(xiàng)目工程target里面的schemurl追加://
以上所述是小編給大家介紹的通過(guò)掃描二維碼打開(kāi)app的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- php生成二維碼圖片方法匯總
- JS生成和下載二維碼的代碼
- 微信 開(kāi)發(fā)生成帶參數(shù)的二維碼的實(shí)例
- Android項(xiàng)目實(shí)戰(zhàn)(二十八):使用Zxing實(shí)現(xiàn)二維碼及優(yōu)化實(shí)例
- JavaScript實(shí)現(xiàn)的微信二維碼圖片生成器的示例
- 利用Java生成帶有文字的二維碼
- jQuery實(shí)現(xiàn)微信長(zhǎng)按識(shí)別二維碼功能
- php微信開(kāi)發(fā)之帶參數(shù)二維碼的使用
- Android實(shí)現(xiàn)二維碼掃描和生成的簡(jiǎn)單方法
- 掃二維碼下載apk并統(tǒng)計(jì)被掃描次數(shù)
相關(guān)文章
js利用for in循環(huán)獲取 一個(gè)對(duì)象的所有屬性以及值的實(shí)例
下面小編就為大家?guī)?lái)一篇js利用for in循環(huán)獲取 一個(gè)對(duì)象的所有屬性以及值的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
基于JavaScript實(shí)現(xiàn)鼠標(biāo)箭頭移動(dòng)圖片跟著移動(dòng)
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)鼠標(biāo)箭頭移動(dòng)圖片跟著移動(dòng)的核心代碼,代碼比較簡(jiǎn)單易懂,需要的朋友可以參考下2016-08-08
javascript獲取ckeditor編輯器的值(實(shí)現(xiàn)代碼)
這篇文章主要介紹了javascript獲取ckeditor編輯器的值,用于表單驗(yàn)證。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11
基于JavaScript實(shí)現(xiàn)輪播圖效果
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01
Bootstrap中的表單驗(yàn)證插件bootstrapValidator使用方法整理(推薦)
這篇文章主要介紹了Bootstrap中的表單驗(yàn)證插件bootstrapValidator使用方法整理(推薦)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
vite添加環(huán)境變量import.meta.env的方法
在不同的文件里面配置不同的環(huán)境變量,可以讓我們的配置更加容易維護(hù)和使用,這里我們說(shuō)下vite配置環(huán)境變量和模式是怎么配置的,對(duì)vite環(huán)境變量相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2023-10-10
前端圖片懶加載(lazyload)的實(shí)現(xiàn)方法(提高用戶體驗(yàn))
圖片懶加載又稱(chēng)圖片延時(shí)加載、惰性加載,即在用戶需要使用圖片的時(shí)候加載,這樣可以減少請(qǐng)求,節(jié)省帶寬,提高頁(yè)面加載速度,相對(duì)的,也能減少服務(wù)器壓力,下面通過(guò)本文給大家分享圖片懶加載lazyload的實(shí)現(xiàn)方法,感興趣的朋友一起看看吧2017-08-08

