当App开发完成后就会发布到各种应用商店。在海外通常会选择Google Play商店,而在国内通常会选择各大手机厂商的应用商店或腾讯的应用宝。
应用商店本身会提供一些推广服务来增加App的曝光度,但仅依靠商店自身的推广效果往往不够理想。因此,通常需要通过投放广告来推广App。这种广告投放可以在不同的平台和渠道进行,但如何评估投放效果呢?这就需要运用归因的方法,将App的下载与用户通过哪个广告途径下载的App进行关联。
通过归因分析,可以确定哪些广告对App的下载和安装产生了比较显著的影响。从而帮助优化广告投放策略,集中资源在效果较好的渠道上,提高推广效果和回报率。
本文主要介绍应用发布到谷歌商店后如何进行下载归因。
Play Install Referrer 库
Google Play商店的Install Referrer API
可以从Google Play安全的获取安装引荐来源相关的信息。
Play Install Referrer
库对Install Referrer API
进行了封装,相比起来使用更加简单。但如果使用的语言不是Kotlin或Java,那么只能通过Install Referrer API
来获取安装引荐来源相关的信息。
添加依赖
在项目app module的build.gradle中的dependencies中添加依赖:
scss
dependencies {
implementation("com.android.installreferrer:installreferrer:2.2")
}
获取安装引荐参数
可以通过以下步骤实现获取安装引荐参数。
- 创建
InstallReferrerClient
类的对象。 - 通过创建的对象调用
startConnection()
方法发起连接,可以传入InstallReferrerStateListener
对连接状态进行监听。 - 在
InstallReferrerStateListener.onInstallReferrerSetupFinished()
回调中处理成功或失败信息。当responseCode
返回InstallReferrerResponse.OK
时,就可以通过getInstallReferrer()
方法获取安装引荐来源参数。 InstallReferrerStateListener.onInstallReferrerServiceDisconnected
回调在连接断开时触发,此时可以进行重连。
示例代码如下:
kotlin
object InstallReferrerUtils {
private var referrerClient: InstallReferrerClient? = null
private val installReferrerStateListener = object : InstallReferrerStateListener {
override fun onInstallReferrerSetupFinished(responseCode: Int) {
if (responseCode == InstallReferrerResponse.OK) {
// 连接成功,可以获取安装引荐来源参数
handlerInstallReferrerParams()
// 处理完后释放资源
release()
} else {
// 连接失败,根据需求可以进行重连
Log.e(CustomConstant.TAG, "connect to google play failed errorCode:$responseCode")
}
}
override fun onInstallReferrerServiceDisconnected() {
// 与Google Play连接断开,10秒后进行重连
reconnectHandler?.postDelayed(reconnectRunnable, 10000)
}
}
private var reconnectHandler: Handler? = null
private var reconnectHandlerThread: HandlerThread? = null
private var reconnectRunnable = Runnable { connectReferrerClient() }
init {
reconnectHandlerThread = HandlerThread("InstallReferrerReconnectThread").apply {
start()
reconnectHandler = Handler(looper)
}
}
fun init(context: Context) {
if (referrerClient == null) {
referrerClient = InstallReferrerClient.newBuilder(context).build()
}
connectReferrerClient()
}
private fun connectReferrerClient() {
referrerClient?.run {
if (!isReady) {
// 发起连接
startConnection(installReferrerStateListener)
}
}
}
private fun handlerInstallReferrerParams() {
referrerClient?.run {
if (isReady) {
installReferrer.let {
// 安装引荐信息
val installReferrer = it.installReferrer
// 安装版本号
val installVersion = it.installVersion
// 开始安装的时间
val installBeginTimestampSeconds = it.installBeginTimestampSeconds
// 开始安装的服务器时间
val installBeginTimestampServerSeconds = it.installBeginTimestampServerSeconds
// 点击推荐信息的时间
val referrerClickTimestampSeconds = it.referrerClickTimestampSeconds
// 点击推荐信息的服务器时间
val referrerClickTimestampServerSeconds = it.referrerClickTimestampServerSeconds
// 过去7天是否参与过免安装体验
val googlePlayInstantParam = it.googlePlayInstantParam
}
}
}
}
private fun release() {
referrerClient?.endConnection()
reconnectHandler?.removeCallbacksAndMessages(null)
reconnectHandlerThread?.quit()
reconnectHandlerThread = null
reconnectHandler = null
referrerClient = null
}
}
在Application
或启动Activity
中调用InstallReferrerUtils.init()
方法即可。
测试
添加referrer的链接:
bash
https://play.google.com/store/apps/details?id=${app的包名}&referrer=${推荐来源参数}
这边referrer
字段先使用testinstallreferrer
测试效果。
由于是通过Google Play获取信息,因此可以将App的aab先发布到商店的内测渠道或封闭式测试渠道。
- 发布到封闭式测试渠道后,添加测试人员的邮箱。
- 在参与的方式中获取邀请参加测试的链接。
- 获取邀请链接后在测试设备打开并接收邀请。
- 在参与的方式中获取测试安装包对应的商店链接。
获取到链接之后记得拼接参数&referrer=testinstallreferrer
。
上传的测试包输出了日志信息,所以安装后在Logcat中可以看到如下日志:
需要注意的是,由于需要从Google Play商店获取相关信息,所以需要确保Google Play商店可以正常使用。
Google Analytics
实现了获取引荐来源参数之后,下一步就是上报对应信息,才能将信息用于分析投放效果。如果App在Google Play商店发布,那么不妨看看同为谷歌系的Google Analytics
。
在领导的指导下,发现Google Analytics
已经内置了Play Install Referrer API
。
广告归因
通过在广告链接中设置广告系列参数,可以用于分析广告的投放效果。官方提供了辅助工具可以协助配置。
可以配置下列5种参数:
utm_source
:标识为您的媒体资源带来流量的广告客户、网站、出版物等,例如:google、newsletter4、billboard。utm_medium
:广告媒介或营销媒介,例如:每次点击费用、横幅广告和电子邮件简报。utm_campaign
:产品的具体广告系列名称、标语、促销代码等。utm_term
:标识付费搜索关键字。如果您采用人工方式标记付费关键字广告系列,那么您还应使用 utm_term 来指定相应关键字。utm_content
:用于区分相似内容或同一广告内的链接。例如,如果您在同一封电子邮件中使用了两个号召性用语链接,就可以使用 utm_content 并为每个链接设置不同的值,以便判断哪个版本的效果更好。
测试
测试步骤与上一部分类似,只是链接改为使用广告系列参数。
测试链接如下:
perl
https://play.google.com/store/apps/details?id=${app的包名}&referrer=utm_source%3Dminigame%26utm_medium%3Ddownload%26utm_term%3Dtest%26utm_content%3Dtest%26utm_campaign%3Dtest
通过测试链接安装后,可以在GA后台的报告->发掘潜在客户->用户获取情况中看到安装已经被统计到(不是实时的),如下图: