Html5内唤醒百度、高德APP的实现示例


Posted in HTML / CSS onMay 20, 2019

前几天,联合黑卡反馈了一个需求,需要在H5中打开百度APP或者是高德APP,于是我在网上查了相关文档,下面放上链接: 1.高德地图 2.百度地图

具体思路就是点击选择地图的时候,先去请求APP链接,800毫秒后无响应,再跳转至H5链接。这样的做法有一点不好就是不管跳不跳APP,都会跳到H5的链接。有好的想法可以评论一下。

下面放相关代码:
 

function  ToggleAppAndH5( AppUrl , AppCallback = () => {}){
             // 先走APP
            const ifr = document.createElement('iframe');
                ifr.src = AppUrl;
                ifr.style.display = 'none';
                document.body.appendChild(ifr);
                setTimeout(function(){
                    document.body.removeChild(ifr);
                }, 3000);
            
                  // 800毫秒后调用H5链接
                let timer = setTimeout(function () {
                        clearTimeout(timer);
                        AppCallback();
                }, 800);
        
                window.onblur = function () {
                    clearInterval(timer);
                };
         }

        function Callback(){
           // 这里放相关H5链接
           if (mapType === 'baidu') {
              frameDom.attr('src', "http://api.map.baidu.com/direction?origin=latlng:"+  curLat +","+ curLng +"|name:"+ currAddr +"&destination=latlng:"+  elat +","+ elng +"|name:"+ eaddr +"®ion="+ cityName +"&mode=driving&output=html&src=com.youbei.chefu");
           } else if (mapType === 'amap') {
              frameDom.attr('src', "https://ditu.amap.com/dir?type=car&from[lnglat]="+ curLng +","+ curLat +"&from[name]="+currAddr+"&to[lnglat]="+ elng +","+ elat +"&to[name]="+eaddr+"&src=com.youbei.chefu");
           }
         }

         const u = navigator.userAgent;
         const isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

1. 高德

// 苹果和安卓头部不一样
   let proto = isiOS ? 'iosamap://path' : 'amapuri://route/plan'  ;

   const AppUrl = proto + "?t= 0&slat="+curLat+"&slon="+curLng+"&sname="+currAddr+"&dlat="+elat+"&dlon="+elng+"&dname="+eaddr+"&src=xxx";

   ToggleAppAndH5(AppUrl,Callback)

2.百度

// 苹果和安卓头部不一样
   let proto = isiOS ? 'baidumap://'  : 'bdapp://' 

   const AppUrl = proto +  "map/direction?region="+cityName+"&origin=latlng:"+ curLat+","+ curLng +"|name:"+ currAddr +"&destination=latlng:"+ elat +","+ elng +"|name:"+ eaddr +"&coord_type=bd09ll&mode=driving&src=com.youbei.chefu";
   
   ToggleAppAndH5(AppUrl, Callback)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
网页布局中CSS样式无效的十个重要原因详解
Aug 10 HTML / CSS
CSS3动画效果回调处理详解
Dec 10 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
Oct 19 HTML / CSS
css3实现可拖动的魔方3d效果
May 07 HTML / CSS
canvas基础之图形验证码的示例
Jan 02 HTML / CSS
Bootstrap 学习分享
Nov 12 HTML / CSS
基于HTML5代码实现折叠菜单附源码下载
Nov 27 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
Oct 20 HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
Aug 18 HTML / CSS
HTML5实现视频弹幕功能
Aug 09 HTML / CSS
纯CSS实现hover图片pop-out弹出效果的实例代码
Apr 16 HTML / CSS
HTML5页面音频自动播放的实现方式
Jun 21 HTML / CSS
socket.io 和canvas 实现的共享画板功能
May 22 #HTML / CSS
Canvas 文字碰撞检测并抽稀的方法
May 27 #HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
May 31 #HTML / CSS
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
Jun 03 #HTML / CSS
详解利用canvas实现环形进度条的方法
Jun 12 #HTML / CSS
Html5 实现微信分享及自定义内容的流程
Aug 20 #HTML / CSS
前端canvas动画如何转成mp4视频的方法
Jun 17 #HTML / CSS
You might like
分享PHP header函数使用教程
2013/09/05 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
详解vue父子模版嵌套案例
2017/03/04 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
python实现猜数游戏
2020/03/27 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
旅行社各个岗位职责
2014/03/15 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
首次购房证明
2015/06/19 职场文书
法律服务所工作总结
2015/08/10 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL
Node实现搜索框进行模糊查询
2021/06/28 Javascript
如何使用pdb进行Python调试
2021/06/30 Python