← 返回博客

通用链接 完整指南

了解 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年5月14日
9 分钟阅读

延迟深度链接(deferred deep linking):原理与使用时机

把原始链接意图带过安装环节,让新用户首次打开应用就直接进入对应页面,而不是默认首页。

deferred deep linking
install referrer
deep linking
mobile attribution
阅读文章
故障排查
2026年3月7日
11 分钟阅读

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

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

universal links
app links
aasa
assetlinks
阅读文章

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

跳过复杂配置,直接用 Appy

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

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