H5唤醒APP

最近接到了一个需求,要求推广落地页或分享页引导已下载用户打开APP,引导未下载用户下载APP。对于这个需求很熟悉也很常见,度娘一下发现有很多的解决方案,但是实际应用中,却发现总是很难做到100%的完美。而且国内的一些浏览器会拦截拦截scheme,完全不知道他们在想些什么- -!,所以只能引导用户去Safari 或者其他浏览器中打开(很是蛋疼)。下面来说一下唤起APP的好几种方法:

iframe

在只有 URL Scheme 的日子里,iframe 是使用最多的了。因为在未安装 app 的情况下,不会去跳转错误页面。但是 iframe 在各个系统以及各个应用中的兼容问题还是挺多的,不能全部使用 URL Scheme。在Android 5+ 的版本下可以使用,ios 9+ 的版本就不要用的,具体的各位同学可以去度娘一下。

<iframe src="URL Scheme://">

a 标签

在这里不得不说一下 Intent 语法:安卓的原生谷歌浏览器自从 chrome25 版本开始对于唤端功能做了一些变化,URL Scheme 无法再启动 Android 应用。 例如,通过 iframe 指向 weixin://,即使用户安装了微信也无法打开。所以,APP需要实现谷歌官方提供的 intent: 语法,或者实现让用户通过自定义手势来打开APP。

<a href="intent://">唤醒APP</a>

具体的 intent 请自行度娘。

window.location.href

URL Scheme 在 ios 9+ 上诸如 safari、UC、QQ浏览器中, iframe 均无法成功唤起 APP,只能通过 window.location 才能成功唤端。当然,如果我们的 app 支持 Universal Link,ios 9+ 就用不到 URL Scheme 了。而 Universal Link 在使用过程中,我发现在 qq 中,无论是 iframe 导航 还是 a 标签打开 又或者 window.location 都无法成功唤端,一开始我以为是 qq 和微信一样禁止了 Universal Link 唤端的功能,其实不然,百般试验下,通过 top.location 唤端成功了。

在这里我个人推荐使用 window.location.href 这种唤醒方法不管是 <a>标签 还是 iframe 都存在这这些那些的兼容问题,但是对于 window.location.href 来说就轻松很多了。

demo 地址 码云

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值