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

Android端使用Branch自定义域名链接无法获取初始URL问题求助

解决Branch.io自定义域名下Android端无法获取原URL的问题

这个问题我之前帮开发者排查过类似的情况,大概率是配置或者SDK处理逻辑的问题,不是必然的bug,咱们一步步来排查解决:

1. 检查Branch Dashboard的自定义域名配置

首先确认在Branch后台的Link Settings里,你添加的自定义域名myapp.com是否已经勾选了「Enable for Android」选项。很多时候开发者会忽略这个细节,导致Android端无法正确识别自定义域名的链接。

2. 验证AndroidManifest.xml的Intent Filter配置

确保你的AndroidManifest里的intent-filter正确匹配自定义域名的HTTPS链接,同时要包含Branch所需的配置。示例配置如下:

<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" />
    <!-- 匹配自定义域名的HTTPS链接 -->
    <data
        android:host="myapp.com"
        android:scheme="https" />
    <!-- 同时保留Branch默认的app scheme,用于内部跳转 -->
    <data
        android:host="open"
        android:scheme="myapp" />
</intent-filter>

注意android:autoVerify="true"是用于Android App Links验证,确保系统直接打开你的App而不是弹窗选择。

3. 调整Branch SDK初始化时的链接解析逻辑

Android端的Branch SDK在处理自定义域名链接时,获取原URL的方式可能和iOS略有差异。你可以尝试在initSession的回调中,从不同的字段获取原链接:

Branch.getInstance().initSession(new Branch.BranchReferralInitListener() {
    @Override
    public void onInitFinished(JSONObject referringParams, BranchError error) {
        if (error == null) {
            // 优先尝试获取non_branch_link字段
            String nonBranchLink = referringParams.optString("non_branch_link");
            if (!TextUtils.isEmpty(nonBranchLink)) {
                Log.d("Branch", "获取到原URL: " + nonBranchLink);
                // 这里处理你的业务逻辑
            } else {
                // 如果non_branch_link为空,尝试获取canonical_url字段
                String canonicalUrl = referringParams.optString("canonical_url");
                if (!TextUtils.isEmpty(canonicalUrl)) {
                    Log.d("Branch", "从canonical_url获取原URL: " + canonicalUrl);
                } else {
                    // 最后尝试解析intent中的原始数据
                    Uri originalUri = getIntent().getData();
                    if (originalUri != null) {
                        Log.d("Branch", "从Intent获取原URL: " + originalUri.toString());
                    }
                }
            }
        } else {
            Log.e("Branch", "初始化Session失败: " + error.getMessage());
        }
    }
}, getIntent().getData(), this);

4. 测试链接解析过程

使用adb命令直接测试自定义域名链接,查看Branch的日志输出,确认链接是否被正确解析:

adb shell am start -W -a android.intent.action.VIEW -d "https://myapp.com/#/param"

然后在Android Studio的Logcat中过滤「Branch」关键词,查看解析过程中的参数是否包含你需要的原URL字段。

5. 排查是否为SDK版本问题或Bug

如果以上步骤都无法解决问题,建议:

  • 升级到最新版本的Branch Android SDK,旧版本可能存在自定义域名处理的bug
  • 检查Branch的官方文档,确认自定义域名在Android端的最新配置要求
  • 如果确认是Bug,可以联系Branch的技术支持,提供你的App ID、自定义域名和测试链接,让他们协助排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:50:54