【问题标题】:Branch.io (Android SDK): 'only initialize Branch in the Launcher activity' and GDPRBranch.io (Android SDK):“仅在启动器活动中初始化分支”和 GDPR
【发布时间】:2026-02-04 16:25:01
【问题描述】:

根据文档:https://docs.branch.io/pages/apps/android/

"只在 Launcher 活动中初始化 Branch 该应用程序将通过 Launcher 活动打开,Branch 将在其中初始化并从链接点击中检索深层链接数据。”

我的问题是我有一个 GDPRLauncherActivity,它是我项目的启动器活动。此 GDPR 活动在首次启动时显示给欧盟用户,以后不再显示(GDPRLauncherActivity 直接启动我的 mainActivity),并且永远不会显示给欧盟以外的用户(GDPRLauncherActivity 也会直接启动我的 mainActivity)。

我不想在我的 GDPRLauncherActivity 中初始化 Branch,因为它不符合 GDPR(用户需要先同意)。

我的问题是:如果我在 MainActivity 中初始化 Branch(而不是我的 GDPRLauncherActivity,它不是我的启动器活动),这真的是个问题。我认为这是一个问题,因为 this.getIntent() 不会得到正确的内容(并且因为它是写在文档中的:))

那么:有问题吗?如果是,最简单的解决方法是什么?

谢谢

【问题讨论】:

  • 请说明您是否使用 AppLinks,以及您的应用支持的 Android 版本。解决方案因人而异。
  • 我不知道什么是 AppLinks,所以我会说不。但我确信社区会对这两种情况的解决方案感兴趣。我的项目支持的 Android 版本:minSDK = 14。感谢您的帮助。

标签: java android branch.io fabric.io


【解决方案1】:

这里是分公司的杰基。

根据经验,在 Launcher Activity 中初始化 Branch SDK 对于归因至关重要,并且是强制性步骤。否则,Branch SDK 将无法报告安装、打开或任何其他漏斗事件,因此您将无法在 Branch 仪表板上获得任何归因数据。

话虽如此,在您的情况下,我建议在开始时设置Branch.trackingDisabled = YES,然后在之后初始化分支。当用户选择跟踪时,Branch.trackingDisabled = NO 将被调用,Branch SDK 将正常运行。除非用户在第一个打开的应用程序中选择加入,否则这种方法将丢失安装。

如果您还有其他问题,请直接发送电子邮件至 integrations@branch.io。

【讨论】:

  • 谢谢。但是,您的答案和文档还不够清楚。问题:1)是“Branch.getAutoInstance(this);”符合 GDPR 吗?换句话说,我可以在未经用户同意的情况下调用它吗? 2)如果我设置“Branch.trackingDisabled = YES;”就在“Branch.getInstance().initSession...”之前,我知道我将无法报告安装;你确认吗?如果是,这是不可接受的,因为我的 Branch 的目标是报告安装情况
  • 3) 所以,我正在寻找另一种解决方案:if "Branch.getAutoInstance(this);"是否符合 GDPR,我可以在我的用户接受 GDPR 而不是 onStart 之后启动“Branch.getInstance().initSession...”吗?如果是,我应该如何处理 onNewIntent 委托方法? (我不确定它何时触发及其用途)谢谢。
  • 您好,为了让我们能够为您提供最好、最准确的帮助,您能否联系 integrations@branch.io?
【解决方案2】:

来自您在上面链接的同一文档:

启用/禁用用户跟踪

如果您需要遵守用户的要求,不要被 GDPR 跟踪 目的,或以其他方式确定不应跟踪用户, 利用此字段来阻止 Branch 发送网络请求。 也可以针对特定的所有用户启用此设置 链接,或跨您的分支链接。

Branch.getInstance().disableTracking(true);

您可以选择在应用的整个生命周期中调用它。一次 调用,网络请求将不会从 SDK 发送。关联 代将继续工作,但不包含识别 关于用户的信息。此外,深度链接将继续 工作,但不会为用户跟踪分析。

这应该允许您专注于深度链接功能,而不必担心用户跟踪,因为您可以添加单独的逻辑来禁用它。此外,Branch 不会仅仅因为您集成了 SDK 而收集任何 PII(个人身份信息)。您必须手动设置用户 ID 并通过 Branch.io SDK 报告用户事件。

出于几个不同的原因,Branch 要求在 Launcher 活动中初始化 SDK:

  • App Links - 使用 App Links(原生 Android 深层链接,Android 6+ 支持)时,深层链接数据位于启动 Launcher 活动的 Intent 中。在这种情况下,除非您手动处理 Intent,否则如果您在未先初始化 Branch SDK 的情况下启动另一个活动,则将无法再访问数据。
  • 分支分析归因 - 启动 Launcher 活动的意图可能包含指示应用从何处启动的数据(可能是推送通知、Play 商店列表等)

如果您不使用 App Links,您可以在 MainActivity 中安全地初始化 SDK。此外,由于您没有在 Launcher 活动中对其进行初始化,因此最好在 MainActivity 的 onCreate 方法中进行初始化,而不是在 onStart 中进行。这意味着您只会在第一次加载 MainActivity 时消耗网络数据 - 后台和前台应用程序不会再次触发它。无论如何,所有深层链接都会触发 Launcher 活动,这反过来会打开 MainActivity,此时 SDK 将从 onCreate 初始化。

【讨论】: