首頁 >php教程 >PHP开发 >透過掃描二維碼開啟app的實現代碼

透過掃描二維碼開啟app的實現代碼

高洛峰
高洛峰原創
2016-12-07 10:49:172813瀏覽

最近有朋友問小編這樣一個問題,先給大家說下項目需求:掃描二維碼打開app如果用戶沒有這個app則提示它跳轉。

用網頁直接來呼叫app是不打可能的,必須原生那邊先做一些設定。

首先,安卓和蘋果的呼叫方法是不同的。

所以我們要先判斷一下終端。

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终端

   

之後最好是分別跳到兩個不同的頁面去做操作,因為蘋果需要在頭部配置一個app-id

下面是蘋果的代碼

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name=&#39;apple-itunes-app&#39; content=&#39;app-id=1115968341&#39;>
<title></title>
</head>
<body>
<a href="https://itunes.apple.com/cn/app/yi-fang-kuai-le-xue-tang/id1115968341?mt=8" id="openApp">点击打开</a>
<script type="text/javascript">
//苹果
document.getElementById(&#39;openApp&#39;).onclick = function(e){
// 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为
// 否则打开a标签的href链接
var ifr = document.createElement(&#39;iframe&#39;);
ifr.src = &#39;iosefunbox://&#39;;
ifr.style.display = &#39;none&#39;;
document.body.appendChild(ifr);
window.setTimeout(function(){
document.body.removeChild(ifr);
},3000)
};
</script>
</body>
</html>

   

這裡的ifr.src就是你去打開app的協議路徑,安卓和蘋果是不一樣的。


如果是安卓機的話就簡單了

<!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 href="http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile" id="openApp">点击打开</a>
<script type="text/javascript">
//安卓
// /**/window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile";
// 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为
// 否则打开a标签的href链接
var ifr = document.createElement(&#39;iframe&#39;);
ifr.src = &#39;efunbox://efunbox.app/efunbox/open&#39;;
ifr.style.display = &#39;none&#39;;
document.body.appendChild(ifr);
window.setTimeout(function(){
document.body.removeChild(ifr);
},3000);
</script>
</body>
</html>

   

這是我們原先的需求,後來變了,說蘋果直接跳到appstore就好了,不用直接打開,安卓的話需要直接打開。

這樣我就直接把它們集合在一個網頁就行。

我上面的a連結是直接跳到騰訊應用寶裡面。

用網頁掃描訪問的話是沒問題的,

但是我就感覺會出事,後來拿微信掃一掃就蒙逼了。安卓只會打開a鏈接,跳轉不進app,因為被微信攔截掉了,蘋果也一樣,解決的方案只能是點擊右上角,提示用戶在瀏覽器打開就沒問題。這種方法是無奈之舉,但後來針對蘋果機找到了一個解決它的方案就是,a鏈接的跳轉直接跳騰訊應用寶上架的鏈接,然後微信內部會處理幫你自動跳到appstore裡面。

最後是整合了一下的程式碼。










   

補充:

掃描二維碼跳轉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>

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn