You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Firebase获取动态链接?调用getDynamicLink始终返回null

Firebase动态链接getDynamicLink返回null问题

我们按照Firebase官方文档实现Android端接收动态链接,但使用以下代码时,onSuccess回调中pendingDynamicLinkData始终返回null:

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
            @Override
            public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                // Get deep link from result (may be null if no link is found)
                Uri deepLink = null;
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.getLink();

                    Log.e("deepLink",""+deepLink.toString());
                }


                // Handle the deep link. For example, open the linked
                // content, or apply promotional credit to the user's
                // account.
                // ...

                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "getDynamicLink:onFailure", e);
            }
        });

排查与解决步骤

  • 先验证Intent数据
    在onCreate或onNewIntent中打印Intent的完整信息,确认是否携带动态链接相关参数:

    Log.d("IntentData", getIntent().getDataString());
    if (getIntent().getExtras() != null) {
        Log.d("IntentExtras", getIntent().getExtras().toString());
    }
    

    如果Intent本身没有动态链接数据,getDynamicLink必然返回null,需先排查链接跳转逻辑是否正确。

  • 核对动态链接配置

    1. 检查Firebase控制台中,动态链接域名已关联你的应用,包名、签名证书指纹完全匹配。
    2. 测试生成的动态链接:直接在浏览器打开,确认能正常跳转至你的应用。
  • 区分冷启动/热启动场景

    • 冷启动(应用未启动):需在onCreate中调用getDynamicLink;
    • 热启动(应用在后台):必须在onNewIntent中重新调用getDynamicLink,因为此时新Intent不会触发onCreate;
    • 注意:若从最近任务列表打开应用,Intent可能未更新,需确保动态链接跳转时设置合适的启动标记(如FLAG_ACTIVITY_CLEAR_TOP)。
  • 更新依赖版本
    确保Firebase动态链接依赖为最新稳定版,旧版本可能存在已知bug:

    implementation 'com.google.firebase:firebase-dynamic-links:21.2.0' // 替换为最新版本
    
  • 检查Manifest配置
    确认AndroidManifest.xml中已正确配置动态链接的Intent过滤器:

    <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:host="your-dynamic-link-domain.page.link" android:scheme="https"/>
    </intent-filter>
    

内容的提问来源于stack exchange,提问作者Devesh Kumawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:25:29