admin管理员组

文章数量:1585965

移动互联网时代,“用户增长”成为每个公司关注的重点话题。为了将更多用户引导到客户端内,产品经理会习惯性地在网页的各个地方巧妙隐藏唤醒App的“机关”。

常见的出现场景

浏览器 —唤醒—> App
  用户在浏览器中浏览网页时,当检测到该网页来自于某个App时,此时可以引导用户呼起或者下载App
微信、QQ —唤醒—> App
  用户将App中自己喜欢的内容分享到微信、QQ,在站外打开网页时,可以正常浏览,也可以引导用户呼起或者下载App

接下来,让我们深入研究下唤醒App的几种解决方案?

唤醒App的几种解决方案

1、 URL Scheme 方式

  • 条件
    • APP需要注册自己的URL Scheme,用来唯一标识一个App。
    • Scheme格式:<scheme域名>://<path>?<params>=<value>
  • 代码

1) iframe方式 

var _iframe = document.createElement('iframe');
_iframe.src = scheme;
_iframe.style.display = 'none';
 document.body.appendChild(_iframe);
 window.setTimeout(function(){
    document.body.removeChild(_iframe);
    if((+new Date()) - openTime > 2500) {
        window.location.href = url;
   }
}, 2000);

2)a链接方式
<a href="<scheme域名>://<path>?<params>=<value>">打开APP</a>
3)location.href 直接跳转
window.location.href = "<scheme域名>://<path>?<params>=<value>"

  • 优缺点

    • 优点:iOS、Android均支持,开发简单;web-native协议制定简单。
    • 缺点:

    由于要考虑用户没有安装App的情况,所以当用户没有安装时,通过延迟会跳转到AppStore。iOS9+当跳转App时,会弹出一个弹框,让用户选择是否跳转,此时还在当前页,setTimeout中的代码会继续执行,导致用户还没来得及选择,就已经跳到AppStore。
    若用户未安装App,Android上scheme打开失败,没有任何提示,延迟之后,跳下载页。但是iOS9+会先弹出个万恶的跳转失败的弹窗,延迟之后,再跳下载页。

    iOS9+呼端确认弹窗

image.png

iOS9+万恶的跳转失败的弹窗

image.png

  • 支持情况

    URL Scheme方式一直被广泛使用,但是有些App并不认可,比如:微信、手机百度;站在这些App的角度上考虑,他们并不希望用户为了看更多分享内容,跳出自己的App,因此他们就在客户端内拦截了scheme方式呼端,导致URL Scheme方式在微信、手机百度中彻底失效!!!当然微信是存在一个白名单的,对于白名单中的分享链接是不会屏蔽scheme调用的。
    安卓App厂商差异很大,情况比较多样化(比如:Android Chrome版本25+通过iframe方式呼端失败 )

  • 兼容性

Android系统:Chrome for Android无法通过iframe方式来调用scheme,而通过a链接的方式可以成功调用,而针对Chrome内核的浏览器如360浏览器,对于iframe和a链接的方式都能支持,所以对Chrome内核的浏览器采用a链接的方式来调用scheme;对于其他浏览器,如UC,QQ浏览器则采用iframe方式调用scheme。
iOS系统:Safari浏览器不支持 iframe可直接做页面跳转;对于UC、Chrome、QQ只能通过a链接方式调用scheme。
上述提到的屏蔽scheme方式的App:呼端失败跳下载页。

  • 适用于安装就跳转,不安装就跳下载的呼端场景
  • 参考文档(有关客户端配置scheme)
    Android scheme呼起App
    iOS 客户端URL Scheme配置以及使用



作者:宇晓
链接:https://www.jianshu/p/136fd75ab05b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文标签: app