• H5唤起APP


    已知唤醒app方式

    • URL Schemes
    • chrome intent
    • ios UniversalLink / android appLink

    URL Scheme

    URL Schemes可以理解为一种特殊的URL用来定位一个应用以及应用内的某个功能,完全可以按照理解一个网页的URL来理解一个应用的URL

    使用

    跟打开一个链接一样,常见的有:

    • location.href
    • iframe
    • a标签

    使用中常见问题及解决方案

    • 可能会被app禁掉,比如微信,qq等
    • ios9+ 禁止掉了iframe方式。
    • ios及部分安卓浏览器会提示用户是否打开App,并且ios在未安装对应App的时候,会提示“打不开网页,因为该网址无效”
    • h5无法感知是否唤醒成功
    • 大部分浏览器需要用户手动触发链接,js自动触发无效

    针对被app禁止掉的情况,通常会判断是否微信等app环境,然后提示用户浏览器内打开 针对ios9+ iframe 被禁掉的情况,判断下ios版本 针对h5无法感知是否唤醒成功的解决办法是,一段时间之后自动跳转下载页,或者是依赖setTimeout在浏览器进入后台后进程切换导致的时间延迟判断。

     if (isAndroid) {
                            //安卓终端使用iframe
                            iFrame = document.createElement("iframe");
                            iFrame.setAttribute("src", urls);
                            iFrame.setAttribute("style", "display:none;");
                            iFrame.setAttribute("height", "0px");
                            iFrame.setAttribute("width", "0px");
                            iFrame.setAttribute("frameborder", "0");
                            document.body.appendChild(iFrame);
                            // 发起请求后这个 iFrame 就没用了,所以把它从 dom 上移除掉
                            iFrame.parentNode.removeChild(iFrame);
                            iFrame = null;
                            // 如果用户没有安装APP,则提示用户去安装APP
                            setTimeout(() => {
                                window.location.href = "https://www.pgyer.com/A2fc"; // 这里可以自行写一个延时关闭的弹窗,也可以跳转至app下载地址
                            }, 2000);
                        } else if (isiOS) {
                            //iOS终端直接页面跳转
                            window.location.href = urls;
                            // 如果用户没有安装APP,则提示用户去安装APP
                            setTimeout(() => {
                                window.location.href = "https://www.pgyer.com/A2fc"; // 这里可以自行写一个延时关闭的弹窗,也可以跳转至app下载地址
                            }, 2000);
                        } else {
                            window.location.href = urls;
                        }
                           

    Intent

    安卓的原生谷歌浏览器从chrome25版本之后就不能通过URL Schemes唤醒安卓应用。要使用谷歌官方提供的intent:预发, 如果唤醒失败,则会跳转到谷歌的应用市场。语法与URL Schemes及其相似,相当于谷歌定制版的URL Schemes,也没用过,就不多说。

    IOS Universal Link

    Universal Link是在iOS9引入的新功能,通过传统的HTTP链接就可以唤醒app,如果用户没有安装APP,则会跳转到该链接对应的页面,而且在唤醒app的时候没有弹框提示

    原理

     App开发人员去配置中心配置Associated Domain配置一个支持https的域名,比如app-support.tuyacn.com - 然后 app-support.tuyacn.com/apple-app-site-association或者app-support.tuyacn.com/apple-app-site-association/.well-known/apple-app-site-association要返回app的teamId,bundleId,paths信息

    常见问题

    • 微信等几个App还是给屏蔽了
    • 从9.3.X改版之后,通用链接不支持域内跳转了,跳转前后的两个domain必须是不同的,否则只会safari打开。跨域问题:假设当前网页的地址为 ,如果要跳转的链…  这个域下的,系统将不会进行拉起应用的操作,必须要跳转不同的子域,例如 * 时,系统才会根据关联文件去判断是否要拉起应用。
    • 服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新重新安装,否则不会在每次打开时请求apple-app-site-association

    Android App Links

    安卓App Link的出现原因也是为了优化用户体验,在使用scheme唤醒时会弹出一个对话框提示用户是否打开,并且如果用户勾选了取消之后,可能之后就再也唤醒不了。

    安卓App Link的流程和iosUniversal link的类似,iOS中需要配置的app-support.tuyacn.com/apple-app-site-association文件在安卓中叫做app-support.tuyacn.com/.well-known/assetlinks.json,只能放在.well-known下面

  • 相关阅读:
    LeetCode-239 Sliding Window Maximum
    shop--10.商品--商品添加(前端)及问题的解决
    shop--10.商品--添加操作--状态类、枚举类等
    shop--10.商品--商品添加(后端)
    shop--9.商品类别--批量操作--删除类别(前端)
    shop--9.商品类别--批量操作--删除类别(后端)
    shop--9.商品类别--批量操作--增加类别(前端)
    shop--9.商品类别--批量操作--增加类别(后端)
    shop--9.商品类别--批量操作--状态类、枚举类等
    shop--9.商品类别--列表展示
  • 原文地址:https://www.cnblogs.com/liuxiaoru/p/13679570.html
Copyright © 2020-2023  润新知