美文网首页
iOS 配置 Universal Links

iOS 配置 Universal Links

作者: ZT_Story | 来源:发表于2020-03-11 21:05 被阅读0次

    前言

    由于对接微信分享的时候发现微信的SDK 1.8.6需要支持Universal Links,于是查看官网以及各个博客资源
    结合自身实际操作,记录在案

    文档&资料

    1、Support Universal Links - 支持通用链接
    这份文档讲的比较详细,说到了很重要的一点,下面具体操作会提到

    NOTE
    Don’t append .json to the apple-app-site-association filename.

    2、Supporting Associated Domains in Your App
    这份文档仔细讲了2种(iOS12以后、iOS12以前)apple-app-site-association文件的写法,按需参考

    3、苹果官方验证网址
    配置好后可以在这个网页里面验证是否配置成功

    操作

    这里以xcode11为例

    1、在工程中添加 Associated Domains

    按序操作
    Domains的配置以applinks:开头,后面写你放置apple-app-site-association文件的域名,到根目录即可

    2、登录苹果开发者后台,在你的 APPID 中支持 Associated Domains,并更新 Profile 文件

    3、配置 apple-app-site-association 文件
    配置方式可以参照上面文档1文档2
    创建一个名为apple-app-site-association的json文件

    {
        "applinks": {
            "apps": [],
            "details": [{
                "appID": "你的TeamID.你的Bundle ID",
                "paths": ["*"]
                }]
        }
    }
    

    apps后面的数组为空就好,主要内容配置在details里面
    包含:appIDpaths

    这里着重讲一下paths
    path是设定你的app支持的路径列表,只有访问到域名下对应path的地址才会唤起APP。
    其中可以使用通配符*或者/app/*
    具体路径地址/app/home
    还可以忽略某种规则NOT /help/website/*

    划重点:填写完毕后保存,并且将文件.json后缀删掉,没错,删掉,会变成一个不能正常打开的文件

    4、上传apple-app-site-association到你的服务器根目录或者.well-known目录
    上传完后,先访问一下,看看是否能够获取到,当你在浏览器中输入这个文件链接后,应该是直接下载apple-app-site-association文件

    同时可以访问苹果官方验证,来校验你文件是否正确上传

    如果校验成功会展示以上信息
    Error no apps with domain entitlements 是因为还没有发布

    5、以上做完之后可以安装APP到手机上
    用Safari访问你的服务器域名+你的path

    https://域名/path/
    

    下拉查看是否有打开APP入口(如下图)。若无入口,可能是由于系统拉取Universal Links失败,请检查手机网络状态是否正常,或更新/重装APP。

    image.png
    系统只会在第一次安装/启动APP的时候去拉取Universal Links

    6、到这里基本算配置成功了,如果还想美化一下目标页面的话,可以参考这两篇文档(纯英文)
    这两个都是通过配置meta来调整头部标签的,有兴趣可以了解一下
    配置WebPage的方式
    The Open Graph protocol

    需要注意的几点

    原文出处:https://blog.csdn.net/gsl111000/article/details/102937698

    1、Universal Link跨域
    Universal Link有跨域问题,Universal Link必须要求跨域,如果不跨域,就不会跳转(iOS 9.2之后的改动)
    假如当前网页的域名是A,当前网页发起跳转的域名是B,必须要求B和A是不同域名才会触发Universal Link,如果B和A是相同域名,只会继续在当前WebView里面进行跳转,哪怕你的Universal Link一切正常,根本不会打开App

    2、Universal Link请求apple-app-site-association时机

    • 当我们的App在设备上第一次运行时,如果支持Associated Domains功能,那么iOS会自动去GET定义的Domain下的apple-app-site-association文件

    • iOS会先请求https://domain.com/.well-known/apple-app-site-association,如果此文件请求不到,再去请求https://domain.com/apple-app-site-association,所以如果想要避免服务器接收过多GET请求,可以直接把apple-app-site-association放在./well-known目录下

    • 服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装,否则不会在每次打开时请求apple-app-site-association

    记录一个小问题

    集成微信1.8.6.2版本的微信分享SDK时,引入工程发现根据官方文档配置的依赖仍然缺少,编译报错
    需要添加libc++.tbd
    或者将工程支持c++编译,把其中一个文件后缀改为.mm即可

    QQ分享的校验

    QQ也发布了关于Universal Link的支持与适配
    官方文档教你如何配置
    看过之前的讲解之后,这里简单陈述一下
    由于qq对于path有一定的要求,apple-app-site-association文件需要我们单独按照qq的配置

    {
         "appID": "EB333MN775.com.hundsun.InternetSellTicket.appstore",
         "paths": [
             ...
             "/qq_conn/${你的qq应用APPId}/*"
         ]
    }
    

    然后去开放平台维护一下相关信息,校验通过之后就可以了

    相关文章

      网友评论

          本文标题:iOS 配置 Universal Links

          本文链接:https://www.haomeiwen.com/subject/nllhjhtx.html