配置Associated Domains时,需要注意哪些细节?

好的,在配置 Associated Domains 时,有几个关键细节需要特别注意,这些细节直接影响 Universal Link 能否正常工作。


1. ** entitlements 文件中的域名格式 **

  • 必须包含 applinks: 前缀

    plaintext

    复制代码
    applinks:www.example.com
  • 不要加 https:// 或路径

  • 子域名需要单独配置 ,比如 applinks:blog.example.com


2. Team ID 和 Bundle ID 必须正确

  • apple-app-site-association 文件中的 appID 格式为:

    plaintext

    复制代码
    <Team ID>.<Bundle Identifier>
  • Team ID 在 Apple Developer 网站 查看

  • Bundle ID 在 Xcode 项目的 "Signing & Capabilities" 中确认


3. 服务器上的 apple-app-site-association 文件

  • 必须放在根目录或 .well-known 目录

    plaintext

    复制代码
    https://www.example.com/apple-app-site-association
    https://www.example.com/.well-known/apple-app-site-association
  • 文件不能有后缀 (不是 .json

  • Content-Type 必须是 application/json

  • 必须支持 HTTPS,且证书有效(不能是自签名证书)

  • 不能有重定向(比如 HTTP 跳转到 HTTPS 会导致验证失败)


4. paths 配置规则

  • 顺序重要:Apple 会按数组顺序匹配,找到第一个匹配项就停止

  • 通配符 * 匹配任意字符(包括子路径)

  • NOT 关键字 必须放在数组第一个位置,用于排除路径

    json

    复制代码
    "paths": ["NOT /admin/*", "/app/*"]
  • 精确匹配 :如果路径结尾不加 *,则只匹配该路径本身


5. Xcode 项目设置

  • Signing & Capabilities 中添加 Associated Domains
  • 确保 entitlements 文件被正确签名
  • 测试时使用 Ad Hoc 或 Development 证书(不能用 Enterprise 证书测试)

6. 测试和验证

  • 使用 Apple 的 App Search API Validation Tool https://search.developer.apple.com/appsearch-validation-tool/

  • 在设备上测试(模拟器可能不支持某些功能)

  • 清除之前的缓存: bash

    运行

    复制代码
    defaults delete com.apple.coreservices.useractivityd
  • 检查是否能通过链接唤醒应用,并正确跳转到指定页面


7. 常见问题排查

  • 如果链接打开了网页而不是应用,可能是:
    • apple-app-site-association 文件配置错误
    • 域名或路径不匹配
    • 证书或 HTTPS 配置问题
  • 如果应用被唤醒但没有正确处理链接,检查:
    • application:continueUserActivity:restorationHandler: 方法实现
    • userActivity.webpageURL 是否正确解析
相关推荐
凯瑟琳.奥古斯特30 分钟前
力扣1012数位DP解法详解
开发语言·c++·算法·leetcode·职场和发展
June bug3 小时前
【199管理类联考】写作(第一轮复习)
考研·职场和发展·学习方法
大江东去浪淘尽千古风流人物5 小时前
【SLAM】slam高动态位姿估计全链路拆解
算法·面试·职场和发展·视觉里程计·slam·vio·大疆
咖啡星人k17 小时前
从Vibe Coding到Prompt Engineering:AI编程的新技能树
面试·职场和发展·ai编程
学iOS很快乐1 天前
Pinterest Staff SDE 五轮面试全过,加拿大 TC 500K CAD,附 OA 真题和每轮考点
面试·职场和发展
Purple Coder1 天前
基于电机控制的MatlabSenier模型
职场和发展
凯瑟琳.奥古斯特1 天前
二分查找解力扣1011最优运载能力
开发语言·c++·算法·leetcode·职场和发展
凯瑟琳.奥古斯特2 天前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
qzhqbb2 天前
字节面试分享复盘
面试·职场和发展
凯瑟琳.奥古斯特2 天前
力扣1008:前序重建BST
开发语言·c++·算法·leetcode·职场和发展