调起App的那些事

1,110 阅读2分钟

在调起之前,h5页面无法判断当前手机是否安装了对应的app,我们只能去尝试调起,并且用一些方法来处理没有调起的情况

安卓中

scheme

scheme是App中跳转的链接,格式例如:AppName: //home?pageid=xxx
Scheme在微信中无法调起,需借助应用宝或者浏览器进行跳转,在安卓中微信直接调起可以使用微信开放标签

appLink 应用链接

类似http的一种url, 将url抛给系统处理,若没有抛给系统则无法调起。,如微博、微信、第三方浏览器(包括Chrome),都不会将URL抛给系统处理,因此App Links生效的情况就很有限了,比如只能从记事本应用、短信应用这些进行跳转

ios中

通用链接 universal link

也是类似http的链接,从ios9+支持

  • 先打开对应的网页,在网页中调起。在浏览器中必须有用户行为才能调起,不适用于做自动调起。

  • 调起成功服务端不会访问到这个链接。若访问到这个链接,说明调起失败了。可以在link上添加下载页地址,让后端重定向到下载页。

  • ios微信支持通用链接来直接调起App

Universal link和scheme的对比:

link 在没有安装app情况的下,可以无缝跳转的对应的网页, 或者app store,而scheme 在 没有安装的情况下会出现错误或者无响应,中断用户的访问。

打开scheme方式

  • a标签: 在iOS的QQ环境,使用 a标签 方式调用URL Scheme更加稳定

  • location.href:  基本能调起

  • iframe:  使用location无法调起可以考虑。 一些系统会拦截src,这也是使用iframe无法调起的原因

由于无法判断是否安装了app, 通过唤起scheme设置超时时间和判断页面可见性,进行跳转到应用商店或者下载中间页

参考: zhuanlan.zhihu.com/p/222864158