此文章基于ios Universal Link 配置教程 + 踩坑记录_apple-app-site-association-优快云博客,我不想重复写一些内容会复制粘贴一下原贴(原贴内容为红色字体),侵删。
由于Xcode可能已经做出了一些优化,可以简化一些原贴流程。
首先说下我们的需求:支持一个域名下多个APP(目前是两个)的universal Link 跳转
Universal Link访问地址为:
(1)steel项目:https://chat.vol.com/steel/
(2) companychat项目: https://chat.vol.com/companychat/
一、Apple Developer网站配置
项目的App ID 需要开通Associated Domains。
原贴需要登录Apple Developer网站进行相关配置并下载配置文件,如果已经有相关的Identifiers,其实可以直接在Xcode直接进行相关配置:
1、打开项目配置,点击左上角的+ Capability
2、双击Associated Domains3、添加一个域名,默认是webcredentials:example.com,webcredentials是凭据相关的内容,修改为applinks:你的域名
二、服务器资源配置(apple-app-site-association文件创建和存放)
首先新建一个名字为apple-app-site-association的纯文本文件(Json格式),不要有任何后缀,文件内容为:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "CIKJHYGBHT.com.volcano.VOLSteelChat",
"paths": ["/steel/*"]
},
{
"appID": "CIKJHYGBHT.com.volcano.VOLCompanyChat",
"paths": ["/companychat/*"]
}
]
}
}
上述填写内容,主要是appID和paths的填写,其他不用理会。
一组{"appID":"XXX", "paths":"[xxx]"}对应一个APP。有多少个APP,就写多少组。我们的需求是一个域名下支持有两个APP使用Universal Link。所以我这里写了两组。
appID查找方式其实也有简单的方法,前提是你已经将构建好的版本包通过Xcode上传到App Store Connect,可以打开TestFlight,选择构建版本元数据,向下滑动找到Store 信息,这里对应的application-identifier就是appID
服务器我使用的是docker部署的nginx,代码参考:
1、docker-compose.yml
services:
all_nginx:
image: nginx:1.25
container_name: all_nginx
restart: unless-stopped
volumes:
# Universal Links 文件
- /www/wwwroot/all_nginx/UniversalLink:/www/wwwroot/all_nginx/UniversalLink:ro
ports:
- "80:80"
- "443:443"
networks:
- test_network
# 添加其他服务的网络
networks:
test_network:
name: test_network
external: true
# 添加其他服务的网络
2、test.conf
upstream test_web {
server test_web:8000;
keepalive 32; # 保持连接数
}
# test API 配置
server {
listen 80;
listen 443 ssl;
server_name ;
# SSL 配置
# API 代理配置
location = /apple-app-site-association {
root /www/wwwroot/all_nginx/UniversalLink;
default_type application/json;
add_header Access-Control-Allow-Origin * always;
add_header Cache-Control "public, no-transform";
}
# 安全相关的响应头
# 日志配置
}
主要配置docker-compose.yml的挂载映射,以及conf的代理。
修改完成后使用docker-compose down && docker-compose up -d命令重新启动nginx,使用restart命令可能不会重新挂载映射。
验证使用命令:curl -I https://你的域名/apple-app-site-association,得到如下响应基本就成功了,如果失败请检查权限问题,或者参考原贴的详细方法。
三、检验
上面的步骤都做完,检查完之后。正常来说,universal link就是配置好了可以测试使用了。
测试方法:
1、在备忘录输入完整地址: https://+applinks配置的域名+apple-app-site-association里的paths
在通讯录点击这个地址,看是否能发生跳转,跳转到手机已经安装上的APP
需要注意的是:应用未在AppStore上架时好像不会生效,我的一款app未通过审核时并不会进行跳转,但是上架后就可以了(同一个appid只需要通过一次审核就可以了,后续构建的新版本未更新到AppStore也可以跳转)
2、在1、中的地址拷贝。在浏览器输入并前往,页面会出现一个下载该APP的区域。(也有可能会出现一个error页面,但是往下滑动一下页面,那个下载APP的区域就出来了)