美文网首页
手机浏览器中js打开指定的APP

手机浏览器中js打开指定的APP

作者: 琼小资 | 来源:发表于2019-06-13 21:03 被阅读0次

需求:

1:分享二维码到微信;

2:用户识别二维码进入H5;

3:H5中出现“下载或打开某某APP”;

4:用户点击“下载或打开APP”后,直接打开APP或者下载APP;

实现原理:

JS通过

location.href=scheme;

打开一个类似为协议的URL,

scheme格式如下:

iOS:app_id://

android:scheme://host:port/path

scheme需要跟app商定,app给到前端;

安卓是在manifest文件的MainActiivty中申明:

<intent-filter>

    <action ..../>

    <category .../>

   <data  android:scheme="demo" android:host="test" android:port="1080" android:path="app"/>

</intent-filter>

如上面内容我们只需在js里用location.href="demo://test:1080/app";

这样如果用户安装了app,js执行到这行即可打开app;

有一些以下几个问题:

1:在微信浏览器不生效,应该是微信屏蔽了这个功能,但是看有一些APP又可以,比如知乎。估计是微信加了白名单;

        解决方法有两个:

            1:听说是可以通过把APP上传到应用宝上,通过打开应用宝的app地址,可以实现,但这样ios无法实现,且一定要安装应用宝。

            2:通过添加引导提示,让用户点击微信的右上角按钮,用浏览器打开页面。这样就可以open app了。

2:由于无法判断app是否已经安装,所以不知道是要打开app,还是要下载app;

            解决方法:

                // 打开app

                location.href='demo://test:1080/app';

                setTimeout(function(){

                    // 判断用户是否已经切换到了app

                     if(!document.hidden)(){

                           location.href='http://download.apk';// 下载app

                     }

                },1000);

3:在iOS浏览器里(safari),如果用户没有安装app,直接用location.href='scheme://'时,直接会弹窗提示:打不开该地址,该地址为无效地址。

            解决办法:

                用iframe加载scheme的形式,不要用主窗口load scheme。

                不过测试好像没有用,目前还没有好办法。

相关文章

网友评论

      本文标题:手机浏览器中js打开指定的APP

      本文链接:https://www.haomeiwen.com/subject/qouefctx.html