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 相关文章推荐
CSS3实现精美横向滚动菜单按钮
Apr 14 HTML / CSS
CSS3教程(5):网页背景图片
Apr 02 HTML / CSS
网页切图的CSS和布局经验与要点
Apr 09 HTML / CSS
CSS3制作缩略图的详细过程
Jul 08 HTML / CSS
利用纯CSS3实现tab选项卡切换示例代码
Sep 21 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
Nov 18 HTML / CSS
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
May 08 HTML / CSS
简单整理HTML5的基本特性和语法
Feb 18 HTML / CSS
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
Mar 15 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
Mar 17 HTML / CSS
html5中嵌入视频自动播放的问题解决
May 25 HTML / CSS
amaze ui 的使用详细教程
Aug 19 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
域名和cookie问题(域名后缀)
2012/10/10 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Python中的pass语句使用方法讲解
2015/05/14 Python
python生成IP段的方法
2015/07/07 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
在python里面运用多继承方法详解
2019/07/01 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
Spring中bean集合注入的方法详解
2022/07/07 Java/Android