纠结两天(浏览器中唤起本地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链接,为了方便

android ios 下载地址,Ios/Android h5 唤起本地APP相关推荐

  1. iOS/Android 微信及浏览器中唤起本地APP

    title: iOS/Android 微信及浏览器中唤起本地APP date: 2017-05-10 10:19:20 tags: 需求概述 分享应用活动链接已经成为手机应用一个非常重要的推广传播形式 ...

  2. android应用宝地址链接,android 通过Scheme链接启动app

    一.参考文章: http://www.cnblogs.com/shadajin/p/5724117.html http://jingyan.baidu.com/article/c45ad29cd6b1 ...

  3. 最全的cisco ios下载,思科ios下载

    我自己用的最新cisco ios ,最全cisco ios,最常用的cisco ios,我提供给大家的下载包里面ios包括:c3650,c3620,c3640,c3725,c3745,c5300,c5 ...

  4. IOS免签封装,解决H5应用上架App Store被拒的问题

    通过H5封装成IOS的应用在初期的确受到了广大开发者们的追捧,因为只需要有H5网站就可以通过WEBAPP框架在几分钟内生成一个IOS的APP应用,几乎不需要什么成本.而对于普通玩家来说,在一些专业IO ...

  5. ios 原生android系统下载地址,Android/iOS已有原生项目集成ReactNative

    背景 近期由于项目需要,在已经开发了几个版本的原生App中集成了ReactNative,新版的模块都使用RN开发. 此次集成的工作大部分是参照RN中文文档进行的,但是中文文档也有一些坑和描述不充分的地 ...

  6. android js下载地址,js点击下载跳转iOS或安卓

    在移动wap上,最常见的就是引流用户下载安装自己的应用程序,如何通过js点击判断下载是ios还是安卓呢?其实很简单,就是要判断用户的设备是iOS还是Android,然后分别跳转就可以了. var u ...

  7. android平台与ios下载地址,Android与iOS用户下载时间分布

    根据91手机娱乐数据统计,我们特别将Android系统用户的下载行为与IOS系统用户的下载行为进行了对比分析,按一天24小时来看,我们发现Android与iOS系统用户下载的高峰点与低峰点几乎雷同,不 ...

  8. android 7.0 iso下载地址,iOS 7.0固件 全系列官方正式版下载地址

    苹果公布iOS7以来经过无数次的beta版本,经过漫长的等待iOS7正式版终于发布下载了,本更新带来了华丽的全新设计,同时还包含数百项新功能,包括控制中心.AirDrop.iTunes 广播以及对通知 ...

  9. iOS/Android 微信及浏览器中唤起本地 APP

    需求概述 分享应用活动链接已经成为手机应用一个非常重要的推广传播形式.为了提高转化率,就需要让用户不管是在微信或者是浏览器中,都能在点击链接后, 唤起本地的 app 后 , 跳转到指定页面 . 虽然这 ...

  10. arcgis for android sdk下载地址,Arcgis Runtime sdk for android 授权

    要下载和安装 ArcGISRuntime SDK for Android,您需要注册开发者账户,进而便拥有了访问所有功能的权限,从而实现开发和测试目的.但是,这种情况下,应用程序中的所有地图都具有水印 ...

最新文章

  1. arm linux c++编译警告:ISO C++ forbids converting a string constant to ‘char*’(需要把const char*转换成char*)
  2. 【计网】计网----子网掩码,网关,ARP协议的作用
  3. mysql from unixtime_mysql 错误总结 和FROM_UNIXTIME用法
  4. C#如何开发多语言支持的Winform程序
  5. 如何将原图和json融合_双曲知识嵌入:如何将知识“融合”带入新空间?
  6. MTFBWU的完整形式是什么?
  7. BugkuCTF-MISC题红绿灯
  8. vjudge-Knight Moves(bfs)
  9. 谁是面向对象设计中的霸主?(中)
  10. Educational Codeforces Round 54 (Rated for Div. 2): D. Edge Deletion(最短路树)
  11. mac下chrome浏览器设置ajax跨域调试
  12. 数列分块入门4-6题解
  13. 经典小游戏开发思路和算法之拼图(1)
  14. 点击计算机 不支持此接口
  15. 生僻字html乱码,Tomcat 5.5.X及以上版本的生僻字乱码解决办法
  16. 【编程题】【Scratch三级】2019.06 幻影小猫
  17. 双向广搜-HDU1401 Solitaire
  18. HCIP之BGP的选路原则
  19. python新建文件夹代码_Python文件夹与文件的操作实现代码
  20. 前端JS常用工具方法

热门文章

  1. 语音处理:Python实现音频文件声道分离批量处理
  2. Ansys Speos | 手把手教你画光导
  3. linux安装桌面键盘,如何在 Linux 中使用屏幕键盘
  4. bch编码matlab,BCH码的编码方法.doc
  5. c语言程序设计二维数组ppt,C语言程序设计教程二维数组的应用优秀讲义.ppt
  6. OpenSesame-史上最详细教程
  7. 2021年上半年国家软考系统分析师论文和案例分析
  8. 单片机课设中期报告_本科论文中期报告
  9. 微计算机与单片机原理及应用答案,单片机原理及应用(张毅刚)完整答案[一].pdf...
  10. 大智慧行情服务器在哪个文件夹,【大智慧】大智慧公式在哪个文件夹?