最近遇到一个需求:点击一个按钮,如果本机装有则唤起app,没有的话则跳下载页。

刚一接到需求,觉得很熟悉,实际上这个功能也确实很常见,页能搜索到一大堆方案,但是实际应用中,却发现总是很难做到100%的完美。这个大概有两个点,以微信为主的腾讯浏览器系列和其他浏览器。(因为腾讯系列会拦截scheme,手百似乎也会,不知道百度在想什么= =,至于引导用户在Safari中打开之类的方案,本文不再描述)解决方案大致有以下这么几个:

1.url scheme

这个方案基本上就是针对微信、qq内置浏览器,qq浏览器等之外的其余浏览器,从native那边要一个scheme ,然后放在a标签里或者location.href跳一下就行了,但是现在主要问提来了,前端不知道本地到底有没有安装app,这就比较尴尬,只能绕过去,最终选取了这种方案:

bfc0ceef30f7

1

实际上也很容易看出来,就是用一个iframe去做的一个跳页,有的话唤起scheme没有的话,会触发定时器跳到下载地址。但是这个方式在ios里面,在没有app的时候会遇到两次提示,非常讨厌。

2.Universal Link(ios)

用这个方法,主要是因为你的钱冲的还不够= =(据说有些可以腾讯兄弟直接给跳),既然大家都很难做软妹币战士,那么就只能想办法。

这边在微信为主的腾讯兄弟内置浏览器里面,还是比较推荐使用应用宝的,它会自动判断是否本地有app,安卓会自动唤起,只需在尾部拼上参数&android_schema="你的scheme"他便会自动唤起app,ios就不行咯,必须跳app store,(╯‵□′)╯︵┴─┴

终于到了本段主角Universal Link,以下是这货的介绍:

这是iOS9推出的一项功能,如果你的应用支持Universal Links(通用链接),那么就能够方便的通过传统的HTTP链接来启动APP(如果iOS设备上已经安装了你的app,不需要额外做任何判断等),或者打开网页(iOS设备上没有安装你的app)。或许可以更简单点来说明,在iOS9之前,对于从各种从浏览器,Safari、UIWebView或者 WKWebView中唤醒APP的需求,我们通常只能使用scheme。

其实这货实际上就是一个特殊的https请求,注意,必须是https(帮ios的同学划重点 ~~),看起来好屌,似乎有很复杂,对于前端来说,我们有太多的工作要做了:

window.location.href ="native端战友给的Universal Link"

wtf?嗯,就是这样,(╯‵□′)╯︵┴─┴

实际上我们要做的就这么多= =,其他的配置就需要native协调服务端兄弟去做了:准备好与主站不同的域名,比如主站www.xxxx.com,你们可以准备好open.xxxx.com的域名作为重定向用。好吧!实际上通用链接有一个很坑的属性,必须是异域打开,而且如果你提交的是你主站的链接,你打开你的主站你会发现网站上方会挂着一个难看的灰条转向appstore中你们的app,没错,就是ios系统干的这个事,具体的其他注意事项可以参考这篇文章IOS9通用链接(universal link)。

最终实现是这样的:

bfc0ceef30f7

2

是不是很简单~,但是也不是很完美,总感觉差点什么,算了反正也大致实现了,就以后慢慢琢磨吧,ps,这货只不过暂时没有被管制,没准哪天就发现gg了,毕竟你的钱冲的还不够~( ̄▽ ̄~)(~ ̄▽ ̄)~嘿嘿嘿嘿

最后,送上旺仔儿童大礼包(环境判断方法,虽然也是百度的,但是省的找了,请叫我雷锋\(^o^)/~)

最后的最后,不当之处还请各路大牛多多指正~

bfc0ceef30f7

android h5 唤起app,h5唤起app解决方案相关推荐

  1. H5及微信中唤起app的解决方案

    H5及微信中唤起app的解决方案 参考文章: (1)H5及微信中唤起app的解决方案 (2)https://www.cnblogs.com/axl234/p/11082826.html 备忘一下.

  2. Android 通过短信(H5)跳转到App指定页面

    最近公司为了增加用户活跃度,新增了许多活动,要求从多种方式可以跳转到App的指定页面.比如闪屏页.首页弹框.首页banner.webView.极光推送消息点击跳转以及通过短信跳转到App. 对此,我们 ...

  3. iOS/Android 微信及浏览器中唤起本地APP

    title: iOS/Android 微信及浏览器中唤起本地APP date: 2017-05-10 10:19:20 tags: 需求概述 分享应用活动链接已经成为手机应用一个非常重要的推广传播形式 ...

  4. Android 11 踩雷之 App无法唤起相机

    Android 11 踩雷之 App无法唤起相机 因为本人申请了MIUI12的开发版,所以体验了Android11,讲真的体验感极差,基本上App很少有适配android11 的 举个例子大多数游戏的 ...

  5. 解决方案:h5网页外部浏览器唤起微信分享,唤起微信面板,分享朋友圈方案,兼容大部分浏览器

    h5网页外部浏览器唤起微信分享,唤起微信面板,分享朋友圈方案,兼容大部分浏览器 需求是点击分享按钮,直接唤起微信,发送给好有或者朋友圈.这个需求并不好完成,因为微信并没有对h5网页开放api,但是每个 ...

  6. h5支付不能打开支付宝 ios_iOS 解决微信h5支付,支付宝h5支付无法直接返回APP的问题...

    由于公司的业务需要,为了节省申请开通微信支付的时间和人力,公司决定使用微信h5支付.这样即节省了时间,同时以后所有的APP都能使用h5支付,既方便又快捷. 但是真正做的时候问题来了,当你支付成功之后或 ...

  7. 如何一键直达唤起App,提高App拉新和促活?

    随着移动互联网的快速发展,用户不断小规模增长,但市场上应用的增长和下载量却大幅增加.从下图的应用下载量来看,某App已经达到了6亿日活,但总体来说,少数应用都有下降的趋势. 因此,在当前App市场的竞 ...

  8. html5唤起高德,h5页面唤醒百度高德地图

    唤醒APP链接 //高德地图 window.location.href="androidamap://viewMap?sourceApplication=appname&poinam ...

  9. App/H5/小程序测试技术

    本节大纲 ØApp测试概述与流程 ØApp测试策略详解 ØH5测试与小程序测试概述 ØH5测试与小程序测试技术详解 01 App测试概述与流程 定义 1.手机测试 Ø 手机测试是一个很大的题目,涉及到 ...

  10. h5做的app和原生app的区别

    之所以说h5做的app和原生app的区别,是因为一位博友的问题: 随着 h5 的普及,是不是不再需要开发 app ? 我的回答是要分业务需求,分场合而定. 比如现在的微信小程序这么流行,甚至也取代了不 ...

最新文章

  1. 关于dismissViewControllerAnimated值得注意的一点(deinit)
  2. OneData建设探索之路:SaaS收银运营数仓建设
  3. HTML5 文本元素
  4. 微信小程序获取上一页路由 获取从哪个页面跳转进来的
  5. java异常处理代码详解_Java异常处理机制总结
  6. 好中的计算机英文ei,电子信息类容易中的英文EI期刊有哪些
  7. ACM-ICPC 2018 焦作赛区网络预赛 L Poor God Water(BM算法)
  8. mysql 5.7 ga_mysql 5.7.9(GA) 安装
  9. 红豆薏米的祛湿效果到底好不好?
  10. python爬虫之 爬取案例网页ajax请求的数据
  11. mysql索引linke和等于_MySQL之SQL优化详解(三)
  12. 鸿蒙文化博物馆,有趣、有味、有文化!“周末儿童博物馆”在成博欢乐启幕
  13. Qorvo 扩展 750V SiC FET 范围
  14. kotlin需要注意的知识点
  15. UG4.0有免费视频教程下载(数富datafu.com)
  16. 2021第四届红帽杯网络安全大赛-线上赛Writeup
  17. Java23种设计模式总结-学而不习则罔
  18. 严重: A web application created a ThreadLocal with key of type...
  19. 当当网李国庆:不盈利而扩张规模那是“讲故事”
  20. 公司业务宾馆开房均被直播 360:是否开启取决于商家

热门文章

  1. 【历史上的今天】10 月 5 日:Linux 内核正式面世;乔布斯逝世;谷歌发布 Android 6.0
  2. 电子电气架构——车载以太网防火墙
  3. 【听】时间简史,探索宇宙的奥秘
  4. 写搜索框的SQL语句案例
  5. php做端口转发,利用PHP和linux shell在ubuntu服务器实现自动端口转发
  6. ubuntu 添加、删除用户,修改用户名称,修改主机名
  7. 惊!阿里双11数据中心来了一位顶级“刺客”?
  8. python延时程序不能用_Python延迟绑定问题原理及解决方案
  9. 如何保护服务器文件安全,如何保护日志服务器安全?
  10. Ubuntu安装Swagger UI