公司业务拓展到微信,qq和支付宝;在这些平台打开的h5页面需要唤起app实现一些功能;

原理:h5页面内创建一个iframe    通过url scheme      实现h5与安卓和苹果之间的跳转。

实现:找客户端的同事获取url scheme,格式:xx://'跳转页面'/'携带参数';通过这个链接我们可以跳转到应用的某个页面,并携带一定的参数;

代码实现:

1.通过创建iframe,并隐藏;
因为app厂商的差异,浏览器内核和版本不同;通过js触发存在风险;所以这里使用iframe url scheme地址来触发scheme;
var iframe = document.createElement("iframe");
iframe.src = openUrl;
iframe.style.display = "none";
2.判断是否安装了app;
原理:通过url scheme打开app。
if(成功){
h5页面进入后台,在定时器控制打开页面会有明显的延迟;
所以通过时间判断;new date
function openAppUrl ( ){
var gotoApptime = (+new Date());
function check(opentime){
if(opentime>3000||document.hidden||document.webkitHidden){可判断页面是否可见
打开app的函数
}else{
错误未打开
}

}
//启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束
var num =0;
var timer = setInterval(function(){
num++;
var opentime =+new Date() - gotoApptime;
if(num>100 ||open time >3000){
clearInterval(timer);
check(opentime);
}
})
}
3.微信中h5页面打开app或者下载应用效果;通过应用宝链接实现。
                                 if(callback){/ /客户端检测微信直接跳应用宝链接varbrowser=BrowserInfo();//使用微链接varencodeUri=encodeURIComponent('你的uri');

if(browser.isWeixin){window.location.href='你的微链url&android_schema='+encodeUri;

}else{
openAppUrl(function(opened){

callback&&callback(opened);});

}}
完整函数
exportconstopenApp=function(openUrl,callback){//检查app是否打开functioncheckOpen(cb){var_clickTime= +(newDate());functioncheck(elsTime){if(elsTime>3000||document.hidden||document.webkitHidden){cb(1);}else{cb(0);}}//启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束var_count=0,intHandle;intHandle=setInterval(function(){_count++;varelsTime= +(newDate())-_clickTime;if(_count>=100||elsTime>3000){clearInterval(intHandle);check(elsTime);}},20);}

//在iframe 中打开APPvarifr=document.createElement('iframe');ifr.src=openUrl;ifr.style.display='none';

if(callback){//客户端检测微信直接跳应用宝链接varbrowser=BrowserInfo();//使用微链接varencodeUri=encodeURIComponent(openUrl);

if(browser.isWeixin){window.location.href='你的微链url&android_schema='+encodeUri;}else{checkOpen(function(opened){callback&&callback(opened);});

}}

document.body.appendChild(ifr);setTimeout(function(){document.body.removeChild(ifr);},2000);

}函数中调用的BrowserInfo是一个简单的客户端检测。具体如下:

/**

* 客户端检测

*/

exportconstBrowserInfo=function(){

varjson={

userAgent:navigator.userAgent.toLowerCase(),

isAndroid:Boolean(navigator.userAgent.match(/android/ig)),

isIphone:Boolean(navigator.userAgent.match(/iphone|ipod/ig)),

isIpad:Boolean(navigator.userAgent.match(/ipad/ig)),

isWeixin:Boolean(navigator.userAgent.match(/MicroMessenger/ig)),

}

returnjson;

}

          




												

h5网页检测手机是否安装了app。相关推荐

  1. PC、H5网页授权跳转至支付宝APP

    授权支付宝是拼接固定的链接,固定链接中的appId=20000067是固定的,只需要更改自己应用的appid 1.第三方应用授权 单个授权 拼接示例: https://openauth.alipay. ...

  2. 如何在一个APP内检测手机内安装了另外一个APP并且跳转到另外一个APP内?

    开发情景:(uniapp) 前段时间,公司开发了一款拼团类型的购物软件,但是,突然被人举报有病毒,涉嫌欺诈(此APP还未上架),升级会报病毒,不升级交易支付时会有金融风险. 挽救措施: 改包名,移动开 ...

  3. H5判断手机是否安装某个APP

    举例子(支付宝) <!DOCTYPE html> <html><head><meta charset="UTF-8"><met ...

  4. android 获取已安装 错误代码,android获取手机已经安装的app信息

    Android获取手机已安装APP(系统/非系统) 效果图 主体代码 private ListView mlistview; private ListpackageInfoList; private ...

  5. 解决vivo手机无法安装测试APP的问题

    编程环境: 1.android studio (java) 2.vivo y85 USB连接真机测试 **遇到的问题:**在用USB连接android studio 调试app时,发现在真机上无法安装 ...

  6. android 检测手机是否安装了应用宝 app跳转应用宝

    //检测是否安装了应用宝 public boolean isMobile_spExist() {PackageManager manager = this.getPackageManager();Li ...

  7. android应用宝检测是否安装,android 检测手机是否安装了应用宝 app跳转应用宝

    //检测是否安装了应用宝 public boolean isMobile_spExist() { PackageManager manager = this.getPackageManager(); ...

  8. Android检测手机是否安装app

    // 判断设备是否已经安装某应用// pkgName应用包名public static boolean checkInstalled(Context context, String pkgName) ...

  9. 手机html图片模糊,css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css_WEB-ITnose...

    最近在负责一个微信H5 App项目,遇到一个郁闷的问题,手机浏览器查看网页时图标都是模糊的,有锯齿,电脑浏览器显示则是正常.大概知道是分辨率适配等类型的问题,后来网上查找了一些办法,大部分的解决方案都 ...

最新文章

  1. SAP WM 高阶之2-Step Picking for Outbound Delivery
  2. A/B测试中我们都会犯的十个常见错误
  3. 基于libvlc和wxWidgets的简单播放器代码阅读
  4. 微信公众平台开发问答 【转发】
  5. php网站商品图片上传代码,PHP实现图片上传代码
  6. 【Kafka】Mac 环境 Kafka诡异问题之kafka eagle 界面无法访问
  7. B 站 Up 主自制秃头生成器,圆你秃头梦想可好?
  8. form表单提交数据
  9. live2dmesh渲染优先级_Live2D 性能优化
  10. “坦克大战”小游戏(C语言)源代码及其详解注释
  11. ISO七层协议与功能
  12. 做正确的事(效果)比正确的做事(效率)更重要
  13. R语言 判别分析:线性判别、K最邻近、有权重的K最邻近、朴素贝叶斯
  14. mysql 快速入门,SOAR 101 快速入门指南
  15. 如何构建电商用户画像
  16. 洛谷-P1618 三连击(升级版)
  17. uni-app如何让图片高度自适应
  18. 【mysql表数据的大小】关于MySQL 查询表数据大小的总结
  19. 提高计算机网络可靠性的对策,提高计算机网络可靠性的方法研究
  20. 江苏省普通话水平测试计算机评分细则,江苏省普通话水平测试评分细则(试行)...

热门文章

  1. 从0基础开发搜索引擎(一)-----实战项目
  2. 和微信公众号编辑器战斗的日子
  3. 基于java(springboot框架)在线视频点播系统 毕业论文(1)前端
  4. 移动硬盘格式化后怎么恢复?
  5. SEC主席:ICO要作为证券进行注册
  6. 下拉框数据写入Excel并下载
  7. 强!Java实现MSN Messenger聊天
  8. matlab计算图片基频,复倒频谱 - 基频估计
  9. ZIP压缩包密码加密、解密
  10. 固定table中的TH的高度和TD的宽度