← 返回博客

通用链接 完整指南

了解 iOS 和 Android 中通用链接、深度链接与 App Links 的核心知识、实现方法与最佳实践

2025年10月10日12 分钟阅读教程

通用链接如何工作

实现过程通常包含三个关键部分:

1

Apple App Site Association(AASA)文件

部署在域名上的 JSON 文件(路径为 /.well-known/apple-app-site-association),用于告诉 iOS 哪些应用可以处理该域名下的链接。

2

应用配置

你的应用需要在 entitlements(iOS)或 intent filters(Android)中声明可处理的域名与 URL 规则。

3

URL 处理代码

应用需要实现接收深度链接 URL 的代码,并将用户导航到正确页面或内容。

iOS Universal Links 实现

步骤 1:创建 AASA 文件

创建名为 apple-app-site-association 的文件(无扩展名),内容结构如下: apple-app-site-association

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID.com.yourcompany.yourapp",
        "paths": [
          "/products/*",
          "/articles/*",
          "/user/*"
        ]
      }
    ]
  }
}
⚠️

重要提示

该文件必须通过 HTTPS 提供,并使用有效 SSL 证书,同时返回 Content-Type: application/json 响应头。

步骤 2:配置 iOS 应用

在 Xcode 中为应用添加 Associated Domains capability,并加入你的域名:

applinks:yourdomain.com
applinks:www.yourdomain.com

步骤 3:在应用中处理 URL

// AppDelegate.swift
func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let url = userActivity.webpageURL else {
        return false
    }
    
    // Handle the URL and navigate to appropriate screen
    handleUniversalLink(url)
    return true
}

Android App Links 实现

步骤 1:创建 assetlinks.json

将该文件托管在 https://yourdomain.com/.well-known/assetlinks.json:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.yourcompany.yourapp",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"
    ]
  }
}]

步骤 2:更新 AndroidManifest.xml

<activity android:name=".MainActivity">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="https" />
        <data android:host="yourdomain.com" />
        <data android:pathPrefix="/products" />
    </intent-filter>
</activity>

步骤 3:处理 Intent

// MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    
    val action = intent.action
    val data = intent.data
    
    if (Intent.ACTION_VIEW == action && data != null) {
        // Handle the deep link
        handleDeepLink(data)
    }
}

最佳实践与常见陷阱

推荐做法

  • 始终为域名使用 HTTPS
  • 在真实设备上测试,而不只是模拟器
  • 为网页用户提供回退 URL
  • 加入完整的分析追踪
  • 妥善处理各种边界情况
  • 保持 AASA/assetlinks 文件及时更新

避免这样做

  • 不要为 AASA/assetlinks 文件配置重定向
  • 不要忘记校验 JSON 语法
  • 不要把应用导航逻辑写死
  • 不要假设用户一定已安装应用
  • 不要跳过不同系统版本的测试

测试与调试

iOS 测试

  • 1. 使用 Apple 的 AASA 验证工具
  • 2. 在备忘录、信息或邮件中测试链接
  • 3. 在 Xcode Console 中查看日志
  • 4. 在设置 → 开发者中验证域名关联状态

Android 测试

  • 1. 使用 adb shell am start -a android.intent.action.VIEW -d "your-url"
  • 2. 在 Chrome、Gmail 和消息应用中测试
  • 3. 使用 adb shell dumpsys package domain-preferred-apps 检查验证状态
  • 4. 查看 logcat 错误日志

分析与归因

想了解通用链接的真实效果,完善的分析非常关键。建议重点追踪以下指标:

  • 不同渠道的点击率
  • App 打开率 vs 网页回退率
  • 各渠道用户获取成本
  • 深度链接内容的转化率
  • 用户通过深度链接后的首次操作耗时
  • 平台表现差异(iOS vs Android)

专业建议

使用 Appy 这类智能链接平台可自动处理通用链接、追踪分析并提供回退逻辑,节省数周开发时间,并获得企业级基础设施。

免费试用 Appy

结论

通用链接已成为现代移动应用的重要基础能力。它能提供顺滑的用户体验、改善归因,并在多平台环境中稳定工作。虽然实现时需要关注细节,但在用户体验和分析能力上的收益非常值得。

建议从基础配置开始,充分测试后根据真实表现数据持续优化。如果你希望跳过复杂实现流程,可以使用 Appy 这类平台,让这些能力自动运行。

相关 Appy 资源

探索 Appy 的通用链接、深度链接和二维码工具,加速移动应用增长。

继续探索

指南
2025年10月8日
8 分钟阅读

深度链接 vs 通用链接:完整对比

了解深度链接与通用链接的核心差异、适用场景,以及如何正确实现。

deep linking
universal links
comparison
mobile apps
阅读文章
故障排查
2026年3月7日
11 分钟阅读

通用链接打开 Safari?修复 AASA、App Links、重定向与响应头

可执行排障流程,帮助你修复打开浏览器而非 App 的通用链接问题。

universal links
app links
aasa
assetlinks
阅读文章
迁移
2025年10月5日
7 分钟阅读

Firebase Dynamic Links 停服:迁移到 Appy 的完整指南

Firebase Dynamic Links 即将关闭。这里有一份迁移到 Appy 的完整指南,帮助你实现零停机切换。

firebase
dynamic links
migration
deep linking
阅读文章

想看更多内容?浏览 Appy 博客全部主题.

跳过复杂配置,直接用 Appy

Appy 可自动处理通用链接、深度链接、二维码和分析能力,无需编码。

iOS 和 Android 通用链接完整指南 · Appy