H5唤醒app,不完全兼容
---ps---最近新发现一个开源的H5唤醒app的库:
建议使用第三方开源库https://github.com/suanmei/callapp-lib实现;
或者极光魔链(后期可能会收费)
https://www.cnblogs.com/SimonHu1993/p/10578775.html
<script type="text/javascript">
var theUrl = '';
var Terminal={};
var startTime = new Date().getTime();
// 获取终端的相关信息
window.onload=function(){
Terminal = {
// 辨别移动终端类型
platform : function(){ return {
// android终端或者uc浏览器
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
// 是否为iPhone或者QQHD浏览器
iPhone: u.indexOf('iPhone') > -1 ,
// 是否iPad
iPad: u.indexOf('iPad') > -1,
//是否为微信
mic:u.indexOf('MicroMessenger') > -1,
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
// 根据不同的终端,跳转到不同的地址
if(Terminal.platform.mic) {
document.getElementById("dow").onclick=function(){
document.getElementById("dow").style.display="none";
}
var _a=document.getElementById("dow_a").getElementsByTagName("a");
for(var i=0; i<_a.length; i++){
_a[i].onclick=function(){
document.getElementById("dow").style.display="block";
}
}
return false;
}else{document.getElementById("dow").style.display="none";} if(Terminal.platform.android){
theUrl = 'https://api.zihexin.net/download/zihexin_1.0.apk';
}else if(Terminal.platform.iPhone){
theUrl = 'https://itunes.apple.com/cn/app/zi-he-xin/id581817870?mt=8';
}else if(Terminal.platform.iPad) {
theUrl = 'https://itunes.apple.com/cn/app/zi-he-xin/id581817870?mt=8';
}else{
theUrl = 'https://api.zihexin.net/download/zihexin_1.0.apk';
} //location.href = theUrl;
}
var clipboard = new Clipboard('#bodyBar');
clipboard.on('success', function(e) {
e.clearSelection();
}); clipboard.on('error', function(e) { });
function copydata(){
var url = window.location;
$('#bodyBar').attr('data-clipboard-text',url);
if(Terminal.platform.mic){
alert('请点击本页面右上角选择使用浏览器打开!');
return false;
}
openApp('zihexin://openapp',theUrl,'',openUrl)
}
//是否打开下载页面
function openUrl(opened){
if(opened == 0){
window.location.href = theUrl;
}
}
function openApp(openUrl, appUrl, action, callback) {
//检查app是否打开
function checkOpen(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);
}
//在iframe 中打开APP
var ifr = document.createElement('iframe');
ifr.src = openUrl;
ifr.style.display = 'none';
if (callback) {
checkOpen(function(opened){
callback && callback(opened);
});
} document.body.appendChild(ifr);
setTimeout(function() {
document.body.removeChild(ifr);
}, 2000);
} </script>
参考https://www.cnblogs.com/shadajin/p/5724117.html
本方案对部分安卓浏览器可能出现不兼容,出现打开‘XX’app的提示,导致操作时间过长,判断失误,网上很多根据时间差跳转的都会有此问题,暂未找到兼容性较好的方式,
针对ios9以上的系统,universal link方式可自行了解。
H5唤醒app,不完全兼容的更多相关文章
- 关于H5唤醒APP的功能实现(千辛万苦啊!)
首先,我是个后端,写java的,甚至不是搞移动端的,所以js这方面有点底子但不专业,对于出现的错误也请见谅,原来项目要求有个H5页面打开APP的功能就强行要做,没办法就想办法搞一下,网上的教程基本都是 ...
- H5唤醒app,第三方开源库
在微信浏览器内,安卓打开应用宝,ios跳进appstore,基本都可以成功在外部浏览器内,已安装可进入应用内,未安装进入应用宝提示下载,需客户端支持.<!DOCTYPE html> < ...
- h5唤醒App
一.应用场景 用户在访问我们的网页时,判断出这个用户手机上是否安装了我们的App,如果安装了则直接从网页上打开APP,否则就引导用户前往下载,从而形成一个推广上的闭环.这里只针对从网页端打开本地APP ...
- H5网页唤醒app,判断app安装
在阅读本文之前你首先应该对js有基本对掌握,并且对Scheme,intent有一定的理解.更多的是代码 上午给朋友做了一个产品引导页,但是需要判断ios系统的TestFlight是否安装,进行了goo ...
- 微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app
以前微信浏览器内想要直接唤醒 app 要么接微信的应用宝要么你是腾讯的干儿子. 而在微信在2020年5月分推出了“微信开放标签”功能 wx-open-launch-app 用于微信浏览器内直接唤醒 a ...
- iOS universallinks唤醒app
从iOS9之后,苹果就推出了这个功能,用来唤醒外部app.这个功能在那些电商app上使用尤其广泛,当你打开对应的h5网页后,上面跳出一个是否跳转app的按钮. 现在iOS11已经基本覆盖,iOS12也 ...
- 【转帖】H5 手机 App 开发入门:概念篇
H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...
- 通过页面调用APP【H5与APP互通】
现在H5和App原生的内容原来越互通,所涉及的业务也越来越复杂和融合,所以如何互相之间方便的调用才是王道. 场景1 比如用hybrid获取地理位置和短信信息,这当然需要框架封装好,比如利用框架的bri ...
- APP接口版本兼容的问题
现在基本每个公司都做APP,所以大家都面临 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改.新的APP和接口开发后,接口如何兼容老的 ...
随机推荐
- https://oi-wiki.org/
OI网站 https://oi-wiki.org/
- Java基础 -- 复用类(组合和继承)
复用类有两种实现方式. 在新的类中产生现有类的对象,由于新的类是由现有类的对象所组成,所以这种方法称之为组合. 采用继承实现. 一 组合语法 下面创建两个类WaterSource和Sprinkler ...
- Pandas系列(二)- DataFrame数据框
一.初识DataFrame dataFrame 是一个带有索引的二维数据结构,每列可以有自己的名字,并且可以有不同的数据类型.你可以把它想象成一个 excel 表格或者数据库中的一张表DataFram ...
- 当使用makemigrations时报错No changes detected
在修改了models.py后,有些用户会喜欢用python manage.py makemigrations生成对应的py代码. 但有时执行python manage.py makemigration ...
- Maven 学习总结 (二) 之 生命周期与插件
五.生命周期与插件 1.Maven有三套独立的生命周期:clean.default和site. clean生命周期的目的是清理项目,default生命周期的目的是构建项目,site生命周期的目的是建立 ...
- Angular记录(1)
文档资料 箭头函数--MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_fun ...
- javaScript事件机制深入学习(事件冒泡,事件捕获,事件绑定方式,移除事件方式,阻止浏览器默认行为,事件委托,模拟浏览器事件,自定义事件)
前言 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码.这种在传统软 ...
- [物理学与PDEs]第3章习题7 快、慢及Alfv\'en 特征速度的比较
证明: 当 $H_1\neq 0$ 及 $H_2^2+H_3^2\neq 0$ 时, 快.慢及 Alfv\'en 特征速度 $C_f$, $C_s$ 及 $C_a$ 满足 $$\bex 0<C_ ...
- webpack学习笔记——项目引入zepto及tap事件失效的解决
先要npm下来zepto:npm install zepto 然后npm下来exports-loader和script-loader 配置如下: JavaScript // webpack.confi ...
- 程序设计-理解java继承-遁地龙卷风
(0)写在前面 编程和现实世界是息息相关的,你是如何理解现实世界中的继承呢? 继承在编程中应理解为:对父类资源(本文只讨论方法)的使用,父类方法只提供类基本的功能,父类方法之间不存在调用关系. (1) ...