跳到正文

Android 渠道参数方案对比

Android 团队通常需要知道用户是从哪个渠道、活动或合作方安装的。选择哪种方案,取决于应用的分发方式,以及是否能保持一个已签名 APK。

方案一:Google Play Install Referrer

本节链接

如果应用通过 Google Play 分发,Google Play Install Referrer 是标准方案。Play 保存 referrer 值,应用安装后读取。

适用场景:

  • 应用只发布在 Google Play;
  • 安装来自 Play;
  • 不需要自建 APK 下载页。

它不覆盖 Google Play 之外的直接 APK 分发、企业应用商店或合作方下载页。

方案二:每个渠道单独打包

本节链接

为每个渠道构建一个 APK,把渠道值写死在包里。逻辑直接,但构建、签名、测试和发布工作量会成倍增加。

这种方式也容易导致用户拿到的 APK 和测试过的产物不一致。如果只有少量长期固定的渠道,仍然可以考虑。

方案三:下载时注入渠道值

本节链接

使用 APK Ref Injector 时,只需要保留一个已签名母包。下载链接携带渠道值:

https://download.example.com/d/com-example-app/base.apk?referer=partner-a

服务在下载响应中附加该值。Android 应用启动后通过 AAR SDK 读取。原始 APK 签名保持不变。

适用场景:

  • 自建下载页或合作方下载页;
  • 企业和区域分发;
  • 活动变化比发版周期更快;
  • 不希望重签名。

在 Android 中读取

本节链接

把 AAR 集成到应用后调用:

val result = RefererReader.read(context)
when (result) {
is RefererResult.Found -> {
val channel = result.referer
// 进行安装归因
}
RefererResult.NotFound -> {
// 没有附加渠道值
}
is RefererResult.Error -> {
// 处理或记录错误码
}
}

如果放在启动流程中,建议在后台线程读取。它读取当前安装的 APK,不需要存储权限。

如何选择

本节链接
分发方式 推荐方案
仅在 Google Play Google Play Install Referrer
少量固定企业渠道 逐渠道打包
自建或合作方下载 下载时注入
Play 与直接分发混合 Play referrer + AAR 读取

下一步

本节链接