场景1:

在 h5 页面上,不管用户是否安装过该app,都直接跳转到应用市场,让用户从应用市场上打开app。

思路:

这种场景处理比较简单,直接判断判断是android端还是ios端,然后在点击按钮上赋值对应终端的应用市场下载链接就可以了,在微信上打开h5页面时也不用另外处理。跳转之前,系统会默认弹出对话框问是否跳转。

案例:

下图以ios端打开 淘宝 为例:



具体实现:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title></title><style type="text/css">body{padding-top: 30px;}.open-app {margin: 30px;border-radius: 5px;padding: 10px 20px;border: 1px solid #ccc;}</style><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script></head><body><a class="open-app">click me to store</a><script type="text/javascript">var iosLinkUrl = "http://apps.apple.com/cn/app/id387682726" // 淘宝 app store 下载地址var androidLinkurl = "https://a.app.qq.com/o/simple.jsp?pkgname=com.lucky.luckyclient" //(找不到淘宝应用宝地址,这里以lucky coffee为例)var u = navigator.userAgent, isAndroid, isIOSwindow.onload = function() {init()}function init() {isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端var link = isIOS ? iosLinkUrl : androidLinkurl$('a').attr('href', link)}</script></body>
</html>

场景2:

在 h5 页面上,用户点击打开app按钮,在用户手机上已经安装了App时,提示打开app,否则就引导提示用户前往应用市场。这样就方便了用户,而且在业务需要情况下,可以跳转到app指定页面和传参。

思路:
在 h5 页面上唤醒app ,需要用到 scheme协议(由app端小伙伴提供,关于什么是scheme文末补充),但是在微信浏览器里scheme不起作用,有没有印象有时在微信上打开的一些需要跳转到app的操作时,会提示在浏览器上打开,就是这个原因。
所以需要先判断是否为微信浏览器,是微信浏览器的话,提示到浏览器打开,不是的话,再判断是Android端还是iOS端,然后做相应的处理。

案例:
以打开 淘宝 为例:

具体实现:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title></title><style type="text/css">body{padding-top: 30px;}.open-app {margin: 30px;border-radius: 5px;padding: 10px 20px;border: 1px solid #ccc;}</style><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script></head><body><a class="open-app">click me to app</a><script type="text/javascript">$('a').click(function() {var u = navigator.userAgent;var isWeixin = u.toLowerCase().indexOf('micromessenger') !== -1; // 微信内var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端// 微信内if(isWeixin) {alert('请在浏览器上打开')} else {//android端if (isAndroid) {//安卓app的scheme协议window.location.href = 'taobao://';setTimeout(function(){let hidden = window.document.hidden || window.document.mozHidden || window.document.msHidden ||window.document.webkitHidden if(typeof hidden =="undefined" || hidden ==false){//应用宝下载地址 (emmm 找不到淘宝应用宝的地址,这里放的是 lucky coffee 地址)window.location.href ="https://a.app.qq.com/o/simple.jsp?pkgname=com.lucky.luckyclient";}}, 2000);}//ios端if (isIOS) {//ios的scheme协议window.location.href = 'taobao://'setTimeout(function(){let hidden = window.document.hidden || window.document.mozHidden || window.document.msHidden ||window.document.webkitHidden if(typeof hidden =="undefined" || hidden ==false){//App store下载地址window.location.href = "http://itunes.apple.com/app/id387682726";}}, 2000);}}});</script></body>
</html>

如果 能检测到 scheme 就跳转到协议 ‘taobao://’,即打开app;

如果2秒后还没有唤醒 ‘taobao://’,那么就认为该设备上没有安装淘宝app,即跳转到应用市场。

这里选择直接新开窗口来打开链接,或者也可以用到 iframe 框架来打开链接,但是 IOS9屏蔽了 iframe这个标签。

URL Scheme方式唤起Activity或App
URL Scheme是一种页面内跳转协议,通过这个协议可以比较方便的跳转到app某一个页面。

scheme应用场景
scheme 的应用场景很多,比如我们熟悉的:

  • 通过小程序,利用Scheme协议打开原生app;
  • H5页面点击锚点,根据锚点具体跳转路径APP端跳转具体的页面;
  • APP端收到服务器端下发的PUSH通知栏消息,根据消息的点击跳转路径跳转相关页面;
  • APP根据URL跳转到另外一个APP指定页面;
  • 通过短信息中的url打开原生app

scheme协议格式:

[scheme]://[host][:port]/[path]?[query]

scheme: 协议名称(由开发人员自定义)(必要,其他都是可选)
host: 域名
port:端口
path: 页面路径
query: 请求参数

调用:
例如我们再 h5 页面上点击一个唤醒app按钮,如下:

<a href="yc://ycbjie:8888/from?type=yangchong">打开叮咚app</a>

那么这个协议的链接的有来,即再原生app的设置,是长这样的:

<activityandroid:name=".ui.main.ui.activity.SchemeFirstActivity"android:screenOrientation="portrait"><!--Android 接收外部跳转过滤器--><!--要想在别的App上能成功调起App,必须添加intent过滤器--><intent-filter><!-- 协议部分配置 ,注意需要跟web配置相同--><!--协议部分,随便设置 yc://ycbjie:8888/from?type=yangchong  --><data android:scheme="yc"android:host="ycbjie"android:path="/from"android:port="8888"/><!--下面这几行也必须得设置--><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><action android:name="android.intent.action.VIEW" /></intent-filter>
</activity>

需要原生app上先设置好了这些,h5上才能唤醒app。
参考:
Android自定义URL使用Scheme方式唤起Activity或App
Scheme协议详细介绍

h5跳转app指定页面及各种坑的总结

H5页面唤起指定app或跳转到应用市场相关推荐

  1. H5页面唤起指定app或跳转到应用市场(扫描二维码直接下载APP)

    场景1: 在 h5 页面上,不管用户是否安装过该app,都直接跳转到应用市场,让用户从应用市场上打开app. 思路: 这种场景处理比较简单,直接判断判断是android端还是ios端,然后在点击按钮上 ...

  2. vue H5页面唤起手机app(iOS和Android),没有安装则跳转下载页面

    现在好多的app应用都有对应的h5页面,那么h5和app直接是如何交互的呢? 这里使用的是Scheme协议. 什么是URL Scheme? android中的scheme是一种页面内跳转协议,是一种非 ...

  3. H5页面拉起指定app或跳转到应用市场下载

    如何通过H5跳转至应用商店下载指定app, 实现方式如下: // 跳转至oppo应用商店下载QQ oppomarket://details?packagename=com.tencent.mobile ...

  4. android点击按钮打开一个网页,Android实现H5点击打开app或跳转指定界面

    Android实现H5点击打开app或跳转指定界面 本文原创,转载请注明出处.欢迎关注我的 简书. 安利一波我写的开发框架:MyScFrame喜欢的话就给个Star 场景 H5界面中的入口 有时候为了 ...

  5. vue支付宝html,Vue的H5页面唤起支付宝支付功能

    目前项目中比较常用的第三方支付无非就是支付宝支付和微信支付.下面介绍一下Vue中H5页面如何使用支付宝支付.其实很简单的,只不过是调自己后台的一个接口而已(后台根据支付宝文档,写好支付接口). 触发支 ...

  6. H5页面唤起手机拨打电话(拨号)

    H5页面唤起手机拨打电话(拨号) 在移动端页面开发中,偶尔会需要唤起用户手机的打电话功能,拨打客服电话,此时我们可以按照以下操作实现打电话功能: 拨打电话 index.html在中加入这一段 < ...

  7. h5页面唤起app(iOS和Android),没有安装则跳转下载页面

    由于研究了之后,和同事沟通,找到一个地址进入,分别测试不同手机,机型,安卓进入安卓应用商店,ios进入app store :所以直接贴了一个链接,即可. 下面方法,暂时没用到,分享给需要的盆友. CO ...

  8. 小程序接入h5页面_微信小程序跳转外部链接(h5页面)以及数据交互

    最近项目有个需求,在微信小程序中跳转外部链接完成相关的操作,操作完成后返回微信小程序的相关页面. 1.跳转外部链接(官方文档) 1)入口 //跳转到入口 wx.navigateTo({url: '.. ...

  9. h5页面和原生app页面的区别

    "原生应用"占统治地位 当我们为移动设备开发应用程序时,程序员通常都会选择开发"原生应用","原生应用"是一种用户必须通过手机应用商店购买下 ...

  10. h5页面嵌入android app时遇到的问题

    1.h5页面 通过 .css("transform") 或 .style.transform 获取 transform属性,并通过 split 方法解析 页面translateY ...

最新文章

  1. 用 Python 实现答题卡识别!
  2. MOSA 4600 Plus IP PBX FAQ(应用常见知识点-故障排除)(2)
  3. 2059-authentication plugin 'caching_sha2_passwordcnnot bt loaded :mysql8.0数据库链接不上:
  4. LIB和DLL的区别与使用,非常详细
  5. mysql多表分析_mysql多表查询实例结果及分析-2017.12.14
  6. mysql不可重读读
  7. 关闭 Pycharm 更新提示
  8. url中隐藏php后缀,url中如何隐藏.php
  9. python语言实现reverse函数翻转字符串_python 实现字符串反转的几种方法
  10. 39 FI配置-财务会计-固定资产-组织结构-定义号码范围间隔
  11. oracle数据库文件dbf复制#ocp试验#
  12. 收到阿里年终奖后,我感觉穷的睡不着,网友:贫穷限制了我的想象力
  13. AMD上线Linux专版驱动17.10:支持最新API接口
  14. 映美Jolimark G102 打印机驱动
  15. boostrap中lg,md,sm,xs分别对应的像素宽度
  16. Kubeflow 部署采坑记录
  17. Windows下打开.jar文件的方式
  18. Android 开机加速优化
  19. 杭州电子科技大学ACM 1018
  20. 「双软认定」软件企业需要满足什么条件?

热门文章

  1. 自主导航系列21-layered论文阅读
  2. 全脑地图:单个记忆被拆分存储在多个相连的大脑区域
  3. oracle回收站还原,Oracle从“回收站”恢复删除的表
  4. 简单几步去掉百度热搜
  5. okhttp请求使用cookie
  6. Lebesgue可测但非Borel可测的函数
  7. 【python爬虫】反反爬之破解js加密--入门篇:谷歌学术镜像搜索(scmor.com)
  8. 全局偏移表(GOT)和过程链接表(PLT)
  9. Excel 表格数据去重
  10. matlab环境下图像分形维数的计算,MATLAB环境下图像分形维数的计算.pdf