博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ios/Android h5 唤起本地APP
阅读量:5798 次
发布时间:2019-06-18

本文共 2447 字,大约阅读时间需要 8 分钟。

纠结两天(浏览器中唤起本地APP),一直找不到解决方案,今天总算基本搞定。

ps:吐槽一下 魔窗那篇文章,为什么就不直接把js代码开源开源,混淆后的代码看得我好恼火

参考文章:、

首先是判断浏览器

// 判断浏览器var Navigator = navigator.userAgent;var ifChrome = Navigator.match(/Chrome/i) != null && Navigator.match(/Version\/\d+\.\d+(\.\d+)?\sChrome\//i) == null ? true : false;var ifAndroid = (Navigator.match(/(Android);?[\s\/]+([\d.]+)?/)) ? true : false;var ifiPad = (Navigator.match(/(iPad).*OS\s([\d_]+)/)) ? true : false;var ifiPhone = (!ifiPad && Navigator.match(/(iPhone\sOS)\s([\d_]+)/)) ? true : false;var ifIos = Navigator.match(/iPhone|iPad|iPd/i) ? true : false;var ifSafari = ifIos && Navigator.match(/Safari/);// ios 设备的版本号var iosVersion = Navigator.match(/OS\s*(\d+)/)iosVersion = iosVersion ? (iosVersion[1] || 0) : 0;// 安卓版本号var androidVersion = Navigator.match(/Android\s*(\d+)/)androidVersion = androidVersion ? (androidVersion[1] || 0) : 0;

android5 及以上的高版本

// 延后50毫秒setTimeout(function() {    location.href = ‘自定义 URL’}, 50)

ios9 及以上的版本

setTimeout(function() {  // 必须要使用settimeout    var a = document.createElement("a"); //创建a元素    a.setAttribute("href", ‘自定义 URL’), a.style.display = "none", document.body.appendChild(a);    var t = document.createEvent("HTMLEvents"); // 返回新创建的 Event 对象,具有指定的类型。    t.initEvent("click", !1, !1) // 初始化新事件对象的属性    a.dispatchEvent(t)  // 绑定事件}, 0)

所有情况都用 iframe

document.querySelector("#" + iframe).src = ‘自定义 URL’ // 将iframe增加src

计算时差的方案打开APP

var checkOpen = function (cb){    var _clickTime = +(new Date());    function check(elsTime) {        if ( elsTime > 3000 || document.hidden || document.webkitHidden) {            cb(1);        } else {            cb(0);        }    }    //启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束    var _count = 0, intHandle;    intHandle = setInterval(function(){        _count++;        var elsTime = +(new Date()) - _clickTime;        if (_count>=100 || elsTime > 3000 ) {            clearInterval(intHandle);            check(elsTime);        }    }, 20);}checkOpen(function(opened){    // APP没有打开成功  并且开启自动跳转到下载页    if(opened === 0 && option.autoRedirectToDownloadUrl){        location.href = downloadUrl;    }});

注意

ios9 以上的 Universal Link 设置自行百度下(这个需要问问ios开发人员) 这里还有个我自己发现的 bug

在Android里面的qq里面打开
如果打开APP的同时立马返回到QQ里面,应用宝的下载页立马又重新打开APP。ios里面也有个情况,打开APP的同时立马用左上角的返回再次点击打开APP按钮则
Universal Link 失效,跳转到配置好的 Universal Link 链接,大家有知道的解答哈,共同成长
如果ios9 里面没有安装APP 则直接就挑转到 Universal Link 链接 ,这应该是个bug,我想的是,如果没有安装APP 则跳转到应用宝,这个不知道怎么实现

测试的配置所有用的 得到 的APP链接,为了方便

GitHub上面有个示例:

转载地址:http://kvsfx.baihongyu.com/

你可能感兴趣的文章
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
从内积的观点来看线性方程组
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
限制CheckBoxList控件只能单选
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
如何迅速分析出系统CPU的瓶颈在哪里?
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
阿里云安全肖力:安全基础建设是企业数字化转型的基石 ...
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
如何用纯 CSS 为母亲节创作一颗像素画风格的爱心
查看>>
Linux基础命令---rmdir
查看>>
阿里云胡晓明:未来将探索区块链在工业互联网领域的应用
查看>>
优秀程序员共有的7种优秀编程习惯
查看>>