背景
比来在做微信、QQ、微博中应用js唤起App,之前也做过类似的功能,不过比较粗拙,推敲的情况不太全,并且那已经是良久之前的工作了,很多技巧都已过时,如今有体验更好,功能加倍完美的唤起技巧,之前的很多的筹划,到了如今都已是不太须要了,如今经由过程这篇文┞仿分享给大年夜家一个周全的、最新的唤起筹划,欲望对大年夜家有协助。
最终实现的效不雅
应用流程
- <a href=http://developer.51cto.com/art/201801/"https://applink-party.mtime.cn/mtlf">下载</a>
起首所有的下载/唤起人口都是一个直接跳转,应当是如许:
或者如许:
- window.location.href = 'https://applink-party.mtime.cn/mtlf'
所有的营业断定都是mtlf这个页面琅绫擎来做,如许有两个好处:
- 多营业共用代码。在一个团队中,每小我的营业都可能有一个banner下载,没有比location到一个url更简单的调用方法了
- 可以或许应用universal link
简单说下universal link
universal link的优势
在iOS9之前,唤起方法和如今安卓是一个的,都是应用scheme进行唤起,这种方法有个小问题,每次唤起,都邑给个提示:是否打开xx应用,如许大年夜体验上来讲,又让用户多一步操作。universal link会直接跳转,不会在页面做逗留,前提就是在我们项目标根目次,增一个apple-app-site-association.json文件,琅绫擎的内容大年夜致是如许:
然后iOS的App后台再设备一下,就可以实现直接唤起了!
universal link设备
在H5端怎么才算设备成功了呢?只要我们某一个url在浏览器打开(不管是cdn地址,照样路由转发),看到json文件的内容,H5这边就算设备成功。然后把这个地址,给iOS老司机,和他们一说什么事,他们急速就知道做什么,就这么简单!
微信、微博、QQ、Safari在各平台的唤起筹划
Safari
唤起流程图
Android-微博
经由长时光的实验,总结了这张在各类情况下,唤起成功/唤起掉败的解决筹划,我们接下来一个一个的说。
微信
- iOS平台下,QQ今朝还支撑universal link唤起,如果没有安装,QQ下也支撑直接打开itunes链接,比较其他应用,QQ支撑是最好的。
- android平台下,QQ也支撑scheme方法唤起,然则在一些老机型下,QQ会有必定的概率唤起掉败,具体的现象是:第一次打开页面,唤起掉败,再次打开,唤起成功。根据现象,我们可以推想出,在QQ的webview中,会对scheme的唤起方法做一些加载时光上的限制,经测试,大年夜约在500ms,跨越这个时光值,就会出现唤起掉败的情况。为什么第二次打开,唤起成功的概率会大年夜,是因为第一次加载时,已缓存了文件,第二次打开直接加载,如许时光在限制之内。
微辛?鲱重要的一种分享渠道,然则我们可以或许做的,却不多。之前,iOS下的微信支撑universal link这种唤起方法,然则大年夜2018年1月8日之后,微信把这个给樊篱了!!!不管微信基于什么原因,把iOS下这种最便捷的唤起方法樊篱,我们能做的只能是适应了。so,如今不管是iOS照样android,我们的处理方法是一样的:都是直接跳到应用宝。iOS的应用宝会引导找开AppStore,android的应用宝会直接打开App(前提是你已经下载)
注:微信把itunes链接也樊篱了,所以也没办法直接跳转AppStore,只能借助应用宝来搭这个桥。
用户点击H5页面的打开App或者下载按钮(这个按钮可能在一个下载人口页、各类分享页面的吸顶或吸底的banner),如不雅用户已经安装了App,则根据营业跳转到响应的Native页面;如不雅用户没有安装该应用,则跳到AppStore或者应用市场去下载我们的App。
微博
微博今朝还支撑universal link唤起,我们只须要推敲未下载的情况。
- 在iOS下,微博是不支撑打开应用宝的链接,所以我们须要引导用户应用Safari打开,像如许:
- 在android平台下,应用scheme这种方法是唤不起App的,然则有特例,同样是scheme,大年夜人点评和网易云音乐就可以唤起,有空大年夜家可以本身尝尝,所以我们可以揣摸出,安卓平台下的微博,也有类似微信一样的白名单,在白名单内的,就可以应用scheme唤起,就像微信之于京东,京东在微信琅绫擎就是经由过程scheme方法唤起的。
so,不管是iOS照样android,我们的筹划是:直接引导用户应用本地浏览器打开。
Safari这种情况比较简单,支撑universal link,也支撑直接打开itunes,so,如图处理就可以了。
踩坑
- 在iOS9中,Safari不支撑直接跳转itunes,so,这种情况须要做兼容处理,可以直接跳到应用宝
- 之前看唤起是不是成功了,须要本身来计算时光,因为如果唤起成功了,setInterval的时光就会变慢,经我测试,已经用不到这种办法了,只须要应用document.hidden || document.webkitHidden就可以,兼容性还不错
推荐阅读
我并不明白为什么人们会认为要懂得区块链会有点难,而我也想知道为什么本身并没有。那是在 2013 年,我第一次据说有比特币这个器械(是的,知道的太晚啦)。我穷得连一个都买不起,看到这儿你也许已经对>>>详细阅读
本文标题:JS在微信、微博、QQ、Safari唤起App的解决方案
地址:http://www.17bianji.com/lsqh/40483.html
1/2 1