Maison > php教程 > PHP开发 > 通过扫描二维码打开app的实现代码

通过扫描二维码打开app的实现代码

高洛峰
Libérer: 2016-12-07 10:49:17
original
2832 Les gens l'ont consulté

最近有朋友问小编这样一个问题,先给大家说下项目需求:扫描二维码打开app如果用户没有这个app则提示它跳转。

用网页直接来调用app是不打可能的,必须原生那边先做一些配置。

首先,安卓和苹果的调用方法是不同的。

所以我们需要先判断一下终端。

1

2

3

4

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

Copier après la connexion

之后最好是分别跳转到两个不同的页面去做操作,因为苹果需要在头部配置一个app-id

下面是苹果的代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<!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>

Copier après la connexion

这里的ifr.src就是你去打开app的协议路径,安卓和苹果是不一样的。


如果是安卓机的话就简单了

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<!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>

Copier après la connexion

这是我们原先的需求,后来变了,说苹果直接跳转到appstore里面就好了,不用直接打开,安卓的话需要直接打开。

这样我就直接把它们集合在一个网页就行。

我上面的a链接是直接跳转到腾讯应用宝里面。

用网页扫描访问的话是没问题的,

但是我就感觉会出事,后来拿微信扫一扫就蒙逼了。安卓只会打开a链接,跳转不进app,因为被微信拦截掉了,苹果也一样,解决的方案只能是点击右上角,提示用户在浏览器打开就没问题。这种方法是无奈之举,但后来针对苹果机找到了一个解决它的方案就是,a链接的跳转直接跳腾讯应用宝上架的链接,然后微信内部会处理帮你自动跳转到appstore里面。

最后是整合了一下的代码。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<meta charset="UTF-8">

<title></title>

 

 

<script type="text/javascript">

var u = navigator.userAgent,

app = navigator.appVersion;

var isAndroid = u.indexOf(&#39;Android&#39;) > -1 || u.indexOf(&#39;Linux&#39;) > -1; //android终端或者uc浏览器

var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

if(isIOS){

window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile";

}

if(isAndroid){

alert("请点击右上角在浏览器打开");

window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile";

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>

Copier après la connexion

补充:

扫描二维码跳转app

1、判断是否安装了app

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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

Copier après la connexion

   

2、打开项目工程target里面的schemurl追加://


Étiquettes associées:
app
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal