Firebase Dynamic Links:什么是,如何工作以及在开发中的使用

作者: IT Sectr 发布日期: 2026-05-14 阅读时间: 8 分钟

Firebase Dynamic Links 是 Google 的一项服务,用于创建智能链接,无论应用是否安装,都可以将用户引导到应用中的正确位置。根据 Firebase Documentation,Dynamic Links 在应用不存在时自动将用户重定向到 App Store 或 Google Play,并在安装后恢复跳转上下文。Firebase 的 智能链接 解决了 URL Scheme 的问题,后者无法与未安装的应用一起使用。

要点

  • Firebase Dynamic Links — Google 服务,用于创建支持 deferred deep link 的 iOS 和 Android 通用链接。
  • Deferred — 主要优势:即使应用未安装,链接也能保留跳转上下文,并在安装后恢复。
  • 分析 — Firebase 自动跟踪通过 Dynamic Links 的跳转,并在 Firebase Analytics 和 Google Analytics 中提供数据。
  • 平台 — Dynamic Links 在 iOS(通过 Universal Links)和 Android(通过 App Links)上运行,使用一个适用于两个平台的通用链接。
  • 创建 — 链接通过 Firebase Console、REST API 或客户端 SDK 生成,并为每种场景配置行为。

Firebase Dynamic Links 是 Google 的云服务,为 iOS 和 Android 上的移动应用创建统一的通用链接。动态链接包含指向应用内容的深层链接,但行为类似于普通的 HTTPS 链接:如果应用已安装,则直接打开,否则重定向到应用商店。

与普通的 URL Scheme 不同,Dynamic Links 可以借助 deferred deep link 技术与未安装的应用一起使用。当用户点击链接后安装应用时,Firebase 会保存跳转参数,并在首次启动时传递它们。这为推荐计划、营销活动和邀请打开了可能性。

与普通 URL Scheme 的区别

URL Scheme 需要已安装的应用,并且没有标准的回退机制。Firebase Dynamic Links 通过一个中间 Firebase Web 服务解决了这个问题,该服务确定设备上应用的安装状态并正确路由用户。一个链接在两个平台上工作方式相同。

Firebase Dynamic Link 使用 yourcode.page.link 形式的域名,该域名在 Firebase Console 中注册。当用户通过这样的链接导航时,Firebase 会确定设备类型和应用的安装状态。对于 iOS,使用 Universal Links 机制,对于 Android — 使用 App Links,通过 Digital Asset Links 进行自动验证。

处理过程包括几个连续的阶段:点击链接时,浏览器向 Firebase 服务器发送 GET 请求,服务器确定平台并检查设备上应用的存在。如果应用已安装 — 生成重定向到 Universal Link 或 Intent,并带有打开目标屏幕的参数。如果应用未安装 — 重定向到 App Store 或 Google Play 进行下载。

Dynamic Link 的生命周期

应用在 Firebase SDK 初始化阶段接收链接。getDynamicLink() 方法返回一个包含跳转数据的 PendingResult。成功接收后,从链接中提取深层链接参数、用于分析的 UTM 标签以及在创建链接时传递的任意数据。

Firebase Console 提供了用于创建 Dynamic Links 的可视界面。开发人员指定深层链接(deep link URL)、活动名称、iOS 和 Android 的单独设置以及分析参数。创建后,Firebase 生成一个 https://yourcode.page.link/abc123 形式的短链接,可用于广告材料、电子邮件活动和社交媒体。

对于编程方式创建 Dynamic Links,使用 Firebase REST API 或客户端 SDK。REST API 允许为营销活动批量生成带有自定义参数的链接,包括用于社交媒体的链接和异步跳转分析。通过 API 创建链接时,正确指定 socialMetaTagInfo 参数非常重要 — 它们决定了链接在即时通讯应用和社交网络中通过预览卡片共享时的显示方式。

Dynamic Link 参数

参数用途必填
Deep Link URL指向应用内容的内部链接
iOS Bundle ID应用在 App Store 中的标识符用于 iOS
Android Package Name在 Google Play 中的包名用于 Android
Fallback URL应用不存在时的网页
UTM 标签用于 Google Analytics 的参数

要在 iOS 上使用 Firebase Dynamic Links,需要通过 CocoaPods 或 Swift Package Manager 连接 Firebase SDK,使用 GOOGLE_APP_ID 配置 Info.plist,并在项目的 Associated Domains 中注册 Dynamic Links 域名。之后,应用会自动处理 Firebase 生成的 Universal Links。

在 Xcode 中,需要添加 Associated Domains 功能,记录格式为 applinks:yourcode.page.link。Firebase SDK 使用 application(_:continue:restorationHandler:) 方法处理 Universal Links,因此无需与 AppDelegate 进行额外集成 — Firebase 会自动从 User Activity 中提取 Dynamic Link 参数。

在 Xcode 中配置

用于正确初始化 Firebase 和注册 Dynamic Links 处理程序的 Info.plist 配置示例。FIROptions 键应包含 GoogleService-Info.plist 的项目标识符。

xml
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
    <string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>

如果 AppDelegate 代理被禁用,需要手动调用 handleUniversalLink(_:) 方法并从 continue NSUserActivity 传递 User Activity。Firebase SDK 会自动提取链接参数并通过 completion handler 返回 DynamicLink。

在 Android 上,Firebase Dynamic Links 的集成从在 build.gradle 中添加依赖项和从 Firebase Console 添加 google-services.json 文件开始。Dynamic Links 域名在 Firebase Console 中注册,之后所有带有此域名的链接都会被 Android 应用通过具有 VIEW 操作的 Intent Filter 自动识别。为了正确运行,还需要在根和模块 build.gradle 中添加 Google Services 插件并执行 Gradle 同步。

为了在 Android 上正确处理链接,需要为 Dynamic Links 域名在应该接收传入链接的 Activity 中添加 Intent Filter。过滤器应包含 https 方案、您的 Dynamic Links 域名的主机和默认路径。

Dynamic Links 的 Intent Filter

AndroidManifest.xml 中用于在 yourcode.page.link 域接收 Dynamic Links 的 Intent Filter 示例。

xml
<activity android:name=".MainActivity"
    android:launchMode="singleTask">
    <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"
            android:host="yourcode.page.link" />
    </intent-filter>
</activity>

对于接收 Dynamic Links 的 Activity,将 launchMode 设置为 singleTask 非常重要。这可以防止在通过链接重复导航时创建新的 Activity 实例,并允许在单个实例中正确处理所有传入的深层链接。

适用于 Android 的 Firebase SDK 提供了 FirebaseDynamicLinks.getInstance().getDynamicLink(intent) 方法,该方法返回一个包含链接数据的 PendingTask 对象。从 DynamicLink 对象中提取深层 URI、UTM 参数和跳转时间戳。建议在 Activity 的 onCreate() 和 onNewIntent() 方法中进行处理。

在处理时,重要的是考虑到 Dynamic Link 既可以在从冷状态启动应用时(冷启动)接收,也可以在从其他应用切换到已经运行的应用时接收。对于第二种情况,需要重写 onNewIntent() 并重新调用 Dynamic Link 检查。

在 Kotlin 代码中处理

在 MainActivity 中接收和处理 Firebase Dynamic Link 的示例。代码处理冷启动和从其他应用的跳转。

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        checkDynamicLink(intent)
    }
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        checkDynamicLink(intent)
    }
    private fun checkDynamicLink(intent: Intent) {
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(intent)
            .addOnSuccessListener link ->
                val deepLink = link?.link.toString()
                handleDeepLink(deepLink)
            }
    }
}

addOnSuccessListener 方法返回 DynamicLink,从中通过 link?.link 提取目标链接。如果监听器返回 null,则表示 Intent 不包含 Dynamic Link — 这是没有传入链接的正常应用启动。此外,还有用于跳转分析的 UTM 标签,包括 campaign、medium、source 和 content,可以传递给 Google Analytics 以详细评估每个营销渠道的效果。

常见问题

Firebase Dynamic Links 与普通深层链接有何不同?

Firebase Dynamic Links 支持 deferred deep link — 即使应用未安装,链接也能保留上下文。安装后,应用会收到所有跳转参数,这在普通 URL Scheme 或 Universal Links 中是不可能的。

Firebase Dynamic Links 需要付费吗?

Firebase Dynamic Links 包含在免费的 Firebase Spark 套餐中。创建的链接数量没有限制。不过,自 2024 年起,Google 已宣布过渡到新基础设施,因此条款可能会发生变化。

可以在 Web 应用中使用 Dynamic Links 吗?

Dynamic Links 专为移动应用设计。从桌面浏览器访问时,链接将打开回退 URL。对于 Web 应用,请使用普通链接或您自己的重定向逻辑。

如何在开发阶段测试 Dynamic Links?

Firebase Console 提供 Test Dynamic Link 按钮用于预览行为。您也可以使用安装了 Firebase SDK 的 Android 模拟器或 iOS 模拟器来本地测试所有跳转场景。

Dynamic Link 可以包含多少个字符?

Firebase Dynamic Link 短链接由 page.link 域名和大约 7 个字符的随机后缀组成。总长度约为 30 个字符。内部的深层链接可以是任意长度,但为了兼容性,建议限制在 2 KB 以内。

总结

  • Firebase Dynamic Links — 来自 Google 的 iOS 和 Android 统一通用链接,支持 deferred deep link。
  • 工作原理 — 链接通过确定设备和应用安装状态的 Firebase 服务器进行正确路由。
  • Deferred — 关键优势:跳转参数在从商店安装应用后保存并恢复。
  • 创建 — 链接通过 Firebase Console、REST API 或客户端 SDK 生成,并为每个平台配置参数。
  • iOS 集成 — 需要 Xcode 中的 Associated Domains 和 Firebase SDK;通过 Universal Links 和 continue UserActivity 方法进行处理。
  • Android 集成 — 需要清单中带有 VIEW 操作和 Dynamic Links 域名的 Intent Filter,以及 build.gradle 中的 Firebase SDK。
  • 分析 — Firebase 自动跟踪通过 Dynamic Links 的跳转,支持 UTM 标签用于 Google Analytics。

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

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

讨论项目

另请阅读