Firebase Dynamic Links:是什么、链接创建与集成

作者: IT Sectr 发布日期: 2026-04-29 阅读时间: 9 分钟

Firebase Dynamic Links 是 Google 的一项服务,用于创建智能链接,根据应用是否已安装在设备上,将用户引导至移动应用内的正确位置或网站。即使在从应用商店安装后的首次启动时,Dynamic Links 也能保持跳转上下文。根据 Firebase Documentation, 2026动态链接在统一 API 中处理,自动确定行为:打开应用、转到网站或安装应用。该服务对于推荐计划、新用户引导场景和营销活动不可或缺。

要点

  • Dynamic Links — 智能链接,自动确定是需要安装应用还是打开已安装的应用到指定屏幕。
  • Deferred Deep Linking — 安装后首次启动时保持跳转上下文:用户看到目标屏幕,而不是主屏幕。
  • 链接域名 — 自定义域名,格式为 your-app.page.link,可在 Firebase Console 中 branding。
  • 客户端处理 — 链接通过 Firebase Dynamic Links SDK 在 Android 和 iOS 上处理,参数传递给 intent 或 scene。
  • 分析 — Firebase 自动收集通过 Dynamic Links 的点击、安装和跳转统计数据。

Firebase Dynamic Links 是 Google 的一项技术,创建单个链接,引导至移动应用或网站中的所需内容,根据平台和安装状态调整行为。链接检查应用是否已安装在设备上:如果是 — 打开应用并传递参数,如果否 — 引导至 Google Play 或 App Store 进行安装,安装后重定向到目标屏幕。

关键特性:Deferred Deep Linking

Dynamic Links 相对于普通深层链接的主要优势在于支持延迟深层链接。Deferred Deep Linking 意味着即使应用尚未安装,跳转上下文(链接参数)也会被保留。当用户从商店安装应用时,Dynamic Links SDK 读取保存的上下文并将其传递到相应屏幕。如果没有这项技术,用户安装后将直接进入主屏幕,丢失促销代码、邀请函或特定订单的链接。

应用领域

Dynamic Links 用于推荐计划,通过关联邀请者的账户来吸引新用户。营销活动通过电子邮件通讯和社交媒体的跳转使用 Dynamic Links 精确衡量转化率。在新用户引导场景中,链接将新用户带到带有个性化内容的欢迎屏幕。在电子商务中,产品链接保持上下文,即使在安装后首次启动时也能引导至产品页面。

工作原理 Dynamic Links 由多个阶段组成,每个阶段根据应用状态可能有所不同。当用户点击动态链接时,浏览器向 Firebase 服务器发送请求。Firebase 通过 intent-filter 或 universal link 验证检查应用是否已安装。如果应用已安装,Firebase 打开应用并传递深层链接。如果没有 — 重定向到商店页面或网页版本。

动态链接的结构

标准 Dynamic Link 由基础 URL、链接参数和可选营销标签组成。基础 URL 是注册在 Firebase Console 中的域名,格式为 your-app.page.link。深层链接参数通过查询参数设置:link(应用内的目标 URL)、apn(Android Package Name)、ibi(iOS Bundle ID)、st 和 sd(社交预览的标题和描述)。营销标签 utm_source、utm_medium、utm_campaign 传递给 Google Analytics 进行跟踪。

参数描述示例
link目标深层链接https://yourapp.page.link/product/123
apnAndroid Package Namecom.example.myapp
ibiiOS Bundle IDcom.example.myapp.ios
st社交标题特别优惠
sd社交描述首单 30% 折扣

Firebase Console 在 Engage > Dynamic Links 部分提供可视化界面来创建 Dynamic Links。在控制台中,可以设置所有链接参数,包括深层链接、网页行为、社交元数据和 UTM 标签。创建链接后,控制台提供准备好的 URL 以及点击和跳转统计信息。对于批量创建链接,使用带有 OAuth 2.0 身份验证的 Firebase Dynamic Links REST API。

通过 REST API 创建链接

以编程方式创建 Dynamic Links 使用向 Firebase Dynamic Links API 发送 POST 请求。请求体包含 dynamicLinkInfo,其中包含深层链接参数、平台设置和社交元数据。API 返回格式为 https://your-app.page.link/abc123 的完整 URL。对于长期链接,使用 suffix.option = UNIQUE — 带有唯一后缀的短链接。对于临时链接 — SHORT,可能存在冲突。

js
const axios = require("axios")

const apiUrl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY"

const data = {
    dynamicLinkInfo: {
        domainUriPrefix: "https://yourapp.page.link",
        link: "https://yourapp.com/promo/summer",
        androidInfo: { androidPackageName: "com.example.myapp" },
        iosInfo: { iosBundleId: "com.example.myapp.ios" },
        socialMetaTagInfo: {
            socialTitle: "夏季促销",
            socialDescription: "月底前最高 50% 折扣"
        }
    },
    suffix: { option: "UNIQUE" }
}

axios.post(apiUrl, data)
    .then(res => console.log(res.data.shortLink))
    .catch(err => console.error(err))

短链接和 UTM 标签

Dynamic Links 自动生成短 URL,域名后长度为 6-8 个字符,使其适合在短信和社交媒体中使用。UTM 参数通过 utmParameters 字段或直接在 link 参数中添加。Firebase 自动将 Dynamic Links 点击与 Firebase 的 Google Analytics 关联,从而可以跟踪引荐流量和活动归因。

在 Android 中集成 Dynamic Links

在 Android 中配置 Dynamic Links 包括添加 Firebase SDK、配置接收深层链接的 Activity 的 intent-filter 以及通过 Firebase Dynamic Links SDK 处理链接。安装 SDK 并添加 google-services.json 后,需要在 AndroidManifest.xml 中注册 Activity,并配置 intent-filter 以处理来自应用域名的链接。

在 AndroidManifest 中配置 intent-filter

处理 Dynamic Links 的 Activity 必须具有针对 VIEW 操作以及 DEFAULT 和 BROWSABLE 类别的 intent-filter。AndroidManifest.xml 包含一个 data 标签,带有与您的深层链接对应的 android:scheme、android:host 和 android:pathPrefix。为了处理来自 page.link 域名的链接,还需要添加一个带有 https 方案和 Dynamic Links 域名 host 的 intent-filter。

xml
<!-- AndroidManifest.xml -->
<activity android:name=".MainActivity">
    <intent-filter>
        <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"
            android:host="yourapp.com"
            android:pathPrefix="/promo" />
    </intent-filter>
</activity>

在代码中处理链接

配置 intent-filter 后,需要在 Activity 代码中处理传入的 Dynamic Link。FirebaseDynamicLinks API 从 intent 中获取链接,并返回带有提取参数的 PendingDynamicLinkData 对象。getLink 方法返回目标深层链接,可以解析并用于导航。重要的是在冷启动时(通过 onCreate 中的 getIntent)和热启动时(通过 onNewIntent)都要处理链接。

在 iOS 中集成 Dynamic Links

在 iOS 中配置 Dynamic Links 需要在 Firebase 端和 Xcode 项目中都进行配置。需要在 Firebase Console 中上传 APNs 密钥,通过 Swift Package Manager 或 CocoaPods 添加 Firebase SDK,并配置 App Delegate 以处理 Universal Links。iOS 中的 Dynamic Links 使用 Universal Links 实现浏览器和应用之间的无缝跳转,无需中间页面。

配置 Universal Links

Universal Links 是 Apple 的一项技术,用于将您的域名与移动应用关联。apple-app-site-association (AASA) 文件加载到服务器上的 https://your-app.page.link/apple-app-site-association 地址。Firebase 为您的 Dynamic Links 域名自动创建和维护此文件。在 Xcode 中,需要启用 Associated Domains 并在项目的 Capabilities 中指定 applinks:your-app.page.link。

通过 Firebase SDK 处理链接

对于 iOS,Dynamic Links 的处理通过 Firebase SDK 在 App Delegate 或 Scene Delegate 中执行。application:continueUserActivity: 方法拦截传入的 Universal Link 并将其传递给 Firebase Dynamic Links API,该 API 提取目标链接和参数。Firebase SDK 自动处理 Deferred Deep Links,通过 Firebase Installation API 的短期存储请求安装数据。

swift
import FirebaseDynamicLinks

class AppDelegate: UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        continue userActivity: NSUserActivity,
        restorationHandler: @escaping
            ([UIUserActivityRestoring]?) -> Void
    ) -> Bool {
        return DynamicLinks.dynamicLinks()
            .handleUniversalLink(userActivity.webpageURL!) {
                dynamicLink, error in
                if let link = dynamicLink?.url {
                    self.handleDeepLink(link)
                }
            }
    }
}

Kotlin 实现示例

让我们看看在 Kotlin 的 Android 应用中处理 Dynamic Link 的完整示例。MainActivity 在应用的冷启动和热启动时都读取传入的 Dynamic Link。链接被解析为参数,用于通过传递参数导航到相应的屏幕。示例展示了处理指向促销页面的链接,其中包含促销 ID。

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        handleDynamicLink(intent)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        handleDynamicLink(intent)
    }

    private fun handleDynamicLink(intent: Intent) {
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(intent)
            .addOnSuccessListener { data ->
                val deepLink = data?.link ?: return@addOnSuccessListener
                val promoId = deepLink
                    .getQueryParameter("promoId") ?: ""
                if (promoId.isNotEmpty()) {
                    navigateToPromoScreen(promoId)
                }
            }
            .addOnFailureListener { e ->
                Log.e("DL", "链接处理错误", e)
            }
    }
}

测试 Dynamic Links

要测试 Dynamic Links,使用 Firebase Console,可以在其中创建测试链接并通过即时通讯工具或电子邮件发送到设备。Firebase Dynamics Links Debugger 可通过 URL https://your-app.page.link/?d=1 访问,显示有关链接行为的详细信息。在测试 Deferred Deep Links 时,需要确保应用已被卸载,并且安装后链接使用传递的参数引导到正确的屏幕。

常见问题

Dynamic Links 与普通深层链接有什么区别?

普通深层链接仅在应用已安装时有效,安装后不保留上下文。Dynamic Links 支持 Deferred Deep Linking — 用户安装应用后立即跳转到目标屏幕,并保留链接参数。

Dynamic Links 需要服务器吗?

不需要服务器来创建和处理链接 — 所有操作均通过 Firebase Console、REST API 或客户端的 Firebase SDK 执行。对于批量链接生成,建议使用 REST API,但控制台适合手动创建。

Dynamic Link 的有效期是多久?

Dynamic Links 没有过期日期 — 除非手动删除,否则在 Firebase 中永久存储。带有 UNIQUE 后缀的短链接无限期存在。建议为每个活动创建唯一链接以实现精确归因。

Dynamic Links 可以在没有网络的情况下工作吗?

处理 Dynamic Link 在点击阶段需要互联网连接,因为 Firebase 服务器会检查应用的安装状态。链接处理后,数据通过 intent 或 Universal Link 传递到应用,即使没有网络也可以访问。

Firebase Dynamic Links 的费用是多少?

Firebase Dynamic Links 是免费的在 Spark 计划下。在 Blaze 计划中,每个项目每天有 5 万次点击的限制,无需额外付费。超出限制会阻止创建新链接,直到第二天。

总结

  • Firebase Dynamic Links — 智能链接,将用户引导至应用或网站,如果没有应用,则在保留安装后上下文的情况下引导至商店。
  • Deferred Deep Linking — 关键优势,允许在安装后首次启动时传递上下文(促销代码、邀请函、产品链接)。
  • 链接结构包括基础域名 (your-app.page.link)、深层链接参数、平台设置和用于预览的社交元数据。
  • 链接创建通过 Firebase Console、REST API 或 Firebase SDK 完成,支持 UTM 标签以与 Google Analytics 集成。
  • Android 集成需要在 AndroidManifest 中配置 intent-filter,并通过 FirebaseDynamicLinks API 处理,支持冷启动和热启动。
  • iOS 集成使用带有 AASA 文件的 Universal Links、Associated Domains 以及通过 AppDelegate 或 SceneDelegate 中的 DynamicLinks SDK 进行处理。
  • 免费每天最多 5 万次点击,链接永不过期,可以创建自定义域名用于链接品牌化。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读