浏览器内唤醒APP趋于完美的解决方案

2016-12-28  本文已影响0人  oceanTc
Open App.png

老大让研究一个新功能,H5页面内点击唤醒APP,开始了艰苦的长途跋涉,一步一个坑!!!
1、该如何唤醒APP;
2、如何检测是否有APP;
看看前辈们是怎么做的,唤醒APP,研究发现,可以通过类似于url的形式跳转来唤醒APP,在原生中被命名为schema协议,

taobao://m.taobao.com   //淘宝的唤醒地址

咦,手机上有淘宝,地址也配好了,走起试一下(安卓),打开了,以为全世界都亮了,才发现只是一点星星之火,借鉴前辈们的解决方案,发现不能检测到手机内有没有安装APP,唤醒存在各种兼容性问题,主流的使用两种方法,核心思想是点击唤醒按钮,进行跳转,如果能进行跳转则跳转,否则跳转到下载页面。
1、动态创建iframe标签 (安卓解决方案)

var ifa = document.creatElement('iframe');
ifa.src = url;                              //APP的schema协议
ifa.style.display = 'none';
setTimeout(function(){
  document.body.removeChild(ifa);
  window.location.href = 'download.html'    //APP下载页
},1000)

通过动态生成iframe标签的这种方案,在ios9+里没有响应;
2、window.location.href跳转 (IOS解决方案)

window.location.href = url;                 //APP的schema协议
setTimeout(function(){
  window.location.href = 'download.html'    //APP下载页
},2000)

IOS系统上安装APP,提示弹框,打开APP,当手机里未下载APP,safari会提示错误链接,默认2秒后跳转下载页(系统弹框无法避免);
当切换到app返回到H5页面发现仍然跳转到了下载页面,该怎么办
visibilitychange H5新出的接口 判断页面状态 主要是为了游戏开发人员,在我们玩游戏的过程中,我们会因为信息、电话等问题退出游戏页面,使其进入后台,这个时候判断进入此状态,暂停游戏。目前除了safari不支持,其他浏览器都支持。

https://developer.mozilla.org/zh-CN/docs/Web/Events/visibilitychange API文档

document.addEventListener('visibilitychange webkitvisibilitychange',function(){
  var tag = document.hidden || document.webkitHidden;
  tag ? clearTimeout(timer):'';
})

window.onpagehide = function(){
  clearTimeout(timer);
}

微信内不能唤醒APP的,微信将schema协议进行屏蔽,只对合作伙伴进行白名单开放.


写的不好的地方还望大家及时反馈与纠正,本着共同学习与进步宗旨不断前进!!!

上一篇下一篇

猜你喜欢

热点阅读