iOS 通用连接(Universal Links)

1.背景

苹果在iOS9添加了通用连接(Universal Links),当您支持通用链接时,iOS用户可以点击指向您网站的链接,并无缝链接到已安装的应用程序,而无需通过Safari。如果未安装您的应用,请点击指向您网站的链接以在Safari中打开您的网站。详见苹果官方文档(Universal Links)

2.集成 Universal Links

本人是在项目中使用shareSDK进行微信分享时,收到微信SDK升级的邮件后进行集成的,其他大体也类似,下面分享一下踩坑过程。

2.1 环境

我用的环境:Xcode 11.3 ,mob_sharesdk 4.3.6,阿里云服务器,免费证书, Https

其他必备环境
1. 有一个注册的域名
2. 必须支持https,并且拥有有效的Certificate Authorit证书(不太懂的可以跟后端开发确认,我们用的是阿里
云的服务器,Certificate AuthoritF也是阿里云免费申请的那种)
3.APP支持iOS9以上

2.2 打开Associated Domains

我们项目使用的是自动配置证书
添加完成后如下图所示:

image

Domain 添加你的域名
格式为: applinks:yourrdomain 例如:applinks:www.baidu.com
添加完成后你项目的.entitlements文件会多出一项(如下图),内容与上面所填写的一致,没有该文件的会生成该文件。

image

同时也可以登录自己的开发者账号,查看该项目下的Associated Domains是否是打开状态来验证上面的添加是否正常

image

2.3创建apple-app-site-association文件

苹果官方文档

注:paths如果没有具体要求可以写成["/*", "*"],微信那边需要在/后拼接东西,不这样写微信那边校验不通过,不能只写一个"*"
1.名称必须为apple-app-site-association
2.内容是json
3.文件不能有扩展名
4.官方示例内容
{
  "applinks": {
      "apps": [],
      "details": [
           {
             "appID": "ABCDE12345.com.example.app",
             "paths": [ "/buy/*", "NOT /help/website/*", "/help/*" ]
           }
           {
             "appID": "ABCDE12345.com.example.app2",
             "paths": [ "/buy/*", "NOT /help/website/*", "/help/*" ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}
image

2.4 上传apple-app-site-association文件至自己的https服务器(上面域名对应的服务器)

1.文件路径
可以放在.well-known目录下,或者域名根目录(貌似会先查找.well-known目录下的这个文件,没有的话再去根目录下找,所以建议最好放在.well-known目录下)
2.示例路径:
youdomain/.well-known/apple-app-site-association
youdomain/apple-app-site-association
3.注意事项!
确保上述路径能直接在浏览器访问时下载的你的apple-app-site-association文件,可以下载后校验有没有上传错误(由于文件过小可能存在缓存,清除缓存后重新下载验证

2.5 连接校验

1. 访问网站(备忘录校验)
还有个重要的问题,你的域名下要放个网页,hello world就行,也可以自己定制网页,你们APP的介绍下载等,确保在备忘录里长按域名连接可弹出用你的APP打开这个连接。如下图;

2.连接校验
苹果提供的[校验地址](https://search.developer.apple.com/appsearch-validation-tool)
如果应用没上线,可能会校验不通过,上线后也有可能校验不通过(具体原因不清楚,网上有很多博客提供了校验通过的图,可以自行去查一查)

备忘录图:


image

连接校验图:


image

3 微信Universal Links适配

前往微信开放平台在你的应用下填写Universal Links地址

image

其余按照SDK的适配文档进行适配就行,上面wx处填写的地址需要在调用SDK的时候传入,记得别写错了就行。

你可能感兴趣的:(iOS 通用连接(Universal Links))