作家
登录

JS在微信、微博、QQ、Safari唤起App的解决方案

作者: 来源: 2018-01-29 16:05:49 阅读 我要评论


背景

比来在做微信、QQ、微博中应用js唤起App,之前也做过类似的功能,不过比较粗拙,推敲的情况不太全,并且那已经是良久之前的工作了,很多技巧都已过时,如今有体验更好,功能加倍完美的唤起技巧,之前的很多的筹划,到了如今都已是不太须要了,如今经由过程这篇文┞仿分享给大年夜家一个周全的、最新的唤起筹划,欲望对大年夜家有协助。

最终实现的效不雅

应用流程

  1. <a href=http://developer.51cto.com/art/201801/"https://applink-party.mtime.cn/mtlf">下载</a> 

起首所有的下载/唤起人口都是一个直接跳转,应当是如许:

或者如许:

  1. 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-微博

经由长时光的实验,总结了这张在各类情况下,唤起成功/唤起掉败的解决筹划,我们接下来一个一个的说。

微信

QQ

  • 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

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)