配置网站

创建 apple-app-site-association

在网站根目录或者 .well-known目录下创建 apple-app-site-association 文件。注意,文件没有后缀名。 文件是一个json文件,内容如下:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "团队ID.应用BundleID"
                "paths": ["/路径/*"] 
            }
        ]
    }
}
  • 团队ID,和应用签名证书上的TeamId保存一致
  • 路径 ,遵循url对应的规范,建议每一个App应用都使用独立的路径,便于管理

配置MIME

因为apple-app-site-association 的数据格式是json,所有对应MIME类型:application/json

在对应的站点配置文件里设置,以nginx为例:

# 如果文件在根目录
location /apple-app-site-association {
    default_type application/json;
}

# 如果文件在.well-known目录
location /.well-known/apple-app-site-association {
    default_type application/json;
}

验证网站配置

打开 https://branch.io/resources/aasa-validator/ , 输入网站域名并验证配置是否正确。

关于缓存

Apple会缓存apple-app-site-association文件内容,缓存未必及时更新(一般不超过48小时),所以有时候通过Universal Links打开App会失败。

打开 https://app-site-association.cdn-apple.com/a/v1/你的网站域名可以查看缓存内容

创建 Universal Links网页

还需要在网站部署一个 Universal Links网页。网页的访问路径需要和apple-app-site-association文件中配置的路径一致。 当使用 Safari 浏览器打开Universal Links网页时,可唤起App。

网页内容如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 苹果 Universal Links 标记 -->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <title>打开应用</title>
</head>
<body>
    <div>
        <!-- 替换为你的 App 图标 -->
        <img src="app-icon.png" alt="应用图标" class="app-icon">
        <h1 class="title">在应用中打开</h1>
        <p class="desc">即将为你跳转到对应的应用<br>如果未跳转,请点击下方按钮</p>
        
        <!-- Universal Links 跳转按钮(直接访问当前页面即可触发) -->
        <a href="javascript:void(0)" class="open-btn" id="openBtn">打开应用</a>
    </div>

    <script>
        // 页面加载自动触发 Universal Links 跳转
        window.onload = function() {
            document.getElementById('openBtn').addEventListener('click', function() {
                // 苹果会自动处理 Universal Links 跳转
                window.location.reload();
            });
        };
    </script>
</body>
</html>

配置 App

配置App的Associated Domains

项目名称 → Target → Signing & Capabilities,点击左上角 + Capability,搜索并添加 Associated Domains。

在Associated Domains里添加:applinks:你的网站域名

加入 Universal Links网页地址为 https://a.b.c/x/y/z ,那么Associated Domains需要配置 applinks:a.b.c

App的处理代码

在 SceneDelegate 添加

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let url = userActivity.webpageURL else {
        return
    }
    
    print("Universal Link 跳转成功:\(url)")
    // 在这里处理跳转逻辑,如打开特定页面
}

(老工程)在 AppDelegate 添加

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
        let url = userActivity.webpageURL
        print("跳转链接:\(url)")
    }
    return true
}