服务器配置iOS深层链接
服务器配置iOS深层链接

服务器配置iOS深层链接

首先声明一下,我的Linux服务器使用Nginx进行配置。

iOS深层链接需要配置Apple App Site Association(AASA)文件,这个文件的内容是JSON格式,需要放在HTTPS的.well-known目录下,例如:

https://fangjunyu.com/.well-known/apple-app-site-association

1、配置apple-app-site-association文件

在服务器上,切换到 /var/www/html 文件夹下,创建 .well-known 文件夹和 apple-app-site-association 文件:

cd /var/www/html
mkdir .well-known/
touch apple-app-site-association 

然后使用 vi 编辑命令编辑如下内容:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAMID.com.yourcompany.Banklet",	//  TEAMID.Bundle ID
                "paths": [ "/Settings" ]
            }
        ]
    }
}

其中,appID由TEAMID和应用Bundle ID组成,TEAMID可以在App Store Connect中找到。

paths 是允许的路径,例如 /animation-loop。

配置完成后,如果从网页端访问,如果显示WordPress的页面,没有显示/下载配置的AASA文件,则表示没有配置完成,返回404。

2、配置Nginx配置文件

因为我的服务器涉及Nginx,因此需要修改Nginx的配置文件,从而实现从网页端访问AASA文件。

Nginx 的配置文件通常位于以下位置之一:

/etc/nginx/nginx.conf

/etc/nginx/sites-available/default(对于 Ubuntu 或 Debian 系统)

/etc/nginx/conf.d/default.conf(对于 CentOS 或其他 Linux 系统)

在服务器上,使用vi命令编辑 nginx.conf文件:

vi /etc/nginx/nginx.conf

编辑内容为,在server中添加 location ^~ /.well-known/ 内容

http {
    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  _;

        // 配置所有以.well-known开头的路径都指向/var/www/html目录
        location ^~ /.well-known/ {
            root /var/www/html;
            allow all;
            access_log /var/log/nginx/well_known_access.log;
        }
        // 配置结束

        location / {
            ...
        }
    }
}

这里配置的是443端口(https),如果有80端口(http)也可以考虑一同配置上,配置完成后,检查Nginx配置是否有语法错误。

sudo nginx -t

如果配置文件没有错误,系统会显示类似如下的提示:

nginx: configuration file /etc/nginx/nginx.conf test is successful

重载Nginx配置:

sudo nginx -s reload

3、重启Nginx服务

配置文件没有错误后,需要重启 Nginx 使配置生效:

sudo systemctl restart nginx
sudo systemctl reload nginx

4、测试文件是否能访问

在浏览器中访问你的 apple-app-site-association 文件:

https://yourdomain.com/.well-known/apple-app-site-association

如果配置正确,你应该能够看到/下载这个文件的内容。

如果还是出现 404 错误,检查 Nginx 配置是否正确应用,并确保文件的权限设置正确。

sudo chmod -R 755 /var/www/html/.well-known
sudo chown -R www-data:www-data /var/www/html/.well-known

这样 Nginx 用户(通常是 www-data)就可以读取这些文件。

确保 .well-known 文件夹及其内部的文件具有正确的文件权限,允许 Nginx 访问。

总结

在Linux服务器配置完成AASA文件时,里面的paths字段尽量一次性设置完成。因为我在测试时发现,如果修改paths字段后,短时间内无法通过任何手段来更新跳转到iOS应用的链接,目前只能等待24小时后,清理浏览器缓存和重启,来检查链接的更新。

服务器配置完成后,其他操作则需要查看《SwiftUi配置深层链接》在iOS端进行配置。

如果以上配置完成后,文件仍然无法访问,可以尝试清除浏览器缓存,或者用curl 命令再次检查是否有变化。使用 curl 检查响应头:

curl -I https://fangjunyu.com/.well-known/apple-app-site-association

如果仍然跳转到WordPress并起没有查看/下载AASA文件的提示,可以查看Nginx的访问日志或错误日志,确认请求是否到达了 .well-known 目录的处理部分:

tail -f /var/log/nginx/well_known_access.log

通过日志可以看到 Nginx 是否正确处理了该请求,以及是否存在其他配置问题。

扩展知识

找不到Nginx服务位置

如果找不到nginx配置或找不到nginx安装位置,可以检查当前运行的nginx服务位置:

systemctl status nginx

截图中的nginx位置在/opt/nginx,因此在修改nginx配置文件后,可以到/opt/nginx文件夹中运行 nginx -t,检查是否能够执行:

/opt/nginx -t 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

在输出中,也可以反向找到nginx.conf文件的位置。

也可以通过ps命令查看Nginx进程:

ps -aux | grep nginx

其中 /opt/nginx 就是 Nginx 的可执行文件路径。

Apple App Site Association(AASA)文件的位置

Apple App Site Association (AASA) 文件必须放在 .well-known 目录下,而且这个路径是固定的,不能随便放在其他位置。

路径:AASA 文件必须存放在 Web 服务器的根目录下的 .well-known 文件夹内,路径为:

https://yourdomain.com/.well-known/apple-app-site-association

这个路径是固定的,不能随意修改。

2、文件内容:AASA 文件本身是一个无扩展名的 JSON 文件,它的内容定义了哪些 URL 路径可以被你的应用处理。例如,你可以定义哪些路径对应的网页打开时,App 会被启动并处理。

3、服务器配置:确保你的服务器返回这个文件时的 Content-Type 为 application/json,否则 iOS 设备无法正确解析这个文件。

为什么不能随便找位置放 AASA 文件?

iOS 依赖 .well-known 目录:这是 Apple 的标准规定,iOS 系统会在访问特定网站时自动查找这个文件。如果文件不在 .well-known 目录下,iOS 就不会识别并启用 Universal Links 功能。

安全和标准化:通过 .well-known 目录,Apple 可以确保所有开发者都遵循相同的结构,避免文件放置不当造成的兼容性问题。

如何验证 AASA 文件是否有效?

1、确保路径正确:例如 https://yourdomain.com/.well-known/apple-app-site-association。

2、检查文件内容是否正确:文件中需要包含正确的 appID 和 paths 字段。

3、检查 HTTP 响应头:文件的 Content-Type 必须为 application/json,否则 iOS 设备无法识别。

4、验证服务器支持 HTTPS:Universal Links 只能通过 HTTPS 链接工作,确保你的服务器支持 HTTPS。

apple-app-site-association 文件的作用

apple-app-site-association (AASA) 文件是一个 JSON 格式的文件,它用于告诉 iOS 系统你的网站和应用之间的关系。这个文件是启用 Universal Links 的关键,允许 iOS 系统在用户点击特定链接时,将链接从网页自动引导到你的 App,而不是仅仅打开网页。

AASA 文件的作用

允许通过 Universal Links 启动应用。例如,如果你在网页上点击一个链接,iOS 会检查 AASA 文件,看看该链接是否与某个已安装的 App 相关联。如果相关联,iOS 会直接启动 App 来处理该链接,而不是通过浏览器打开网页。

AASA 文件通常会指定哪些 URL 路径与你的 App 相关联,并且包括 App 的标识符。

AASA 文件结构示例

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.com.yourcompany.appname",
                "paths": [ "/path/to/link", "/another-path/*" ]
            }
        ]
    }
}

appID:指定你应用的团队 ID + Bundle ID(例如:TEAM_ID.com.yourcompany.appname)。

paths:定义可以通过 Universal Links 访问的 URL 路径,支持通配符。

相关文章

SwiftUi配置深层链接:https://fangjunyu.com/2025/02/08/swiftui%e9%85%8d%e7%bd%ae%e6%b7%b1%e5%b1%82%e9%93%be%e6%8e%a5/

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注