当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中增加依靠:

dependencies {
    implementation("com.android.installreferrer:installreferrer:2.2")
}

获取装置举荐参数

能够经过以下过程实现获取装置举荐参数。

  • 创立InstallReferrerClient类的对象。
  • 经过创立的对象调用startConnection()办法建议衔接,能够传入InstallReferrerStateListener对衔接状况进行监听。
  • InstallReferrerStateListener.onInstallReferrerSetupFinished()回调中处理成功或失败信息。当responseCode返回InstallReferrerResponse.OK时,就能够经过getInstallReferrer()办法获取装置举荐来历参数。
  • InstallReferrerStateListener.onInstallReferrerServiceDisconnected回调在衔接断开时触发,此时能够进行重连。

示例代码如下:

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的链接:

https://play.google.com/store/apps/details?id=${app的包名}&referrer=${举荐来历参数}

这边referrer字段先运用testinstallreferrer测验作用。

由于是经过Google Play获取信息,因而能够将App的aab先发布到商铺的内测途径或封闭式测验途径。

  • 发布到封闭式测验途径后,增加测验人员的邮箱。

Android 下载归因 — GA和Play Install Referrer库

  • 在参与的方法中获取约请参与测验的链接。

Android 下载归因 — GA和Play Install Referrer库

  • 获取约请链接后在测验设备打开并接收约请。
Android 下载归因 — GA和Play Install Referrer库
  • 在参与的方法中获取测验装置包对应的商铺链接。

Android 下载归因 — GA和Play Install Referrer库

获取到链接之后记得拼接参数&referrer=testinstallreferrer

上传的测验包输出了日志信息,所以装置后在Logcat中能够看到如下日志:

Android 下载归因 — GA和Play Install Referrer库

需求注意的是,由于需求从Google Play商铺获取相关信息,所以需求确保Google Play商铺能够正常运用。

Google Analytics

实现了获取举荐来历参数之后,下一步便是上报对应信息,才能将信息用于剖析投进作用。假如App在Google Play商铺发布,那么无妨看看同为谷歌系的Google Analytics

在领导的指导下,发现Google Analytics现已内置了Play Install Referrer API

官方文档

Android 下载归因 — GA和Play Install Referrer库

广告归因

经过在广告链接中设置广告系列参数,能够用于剖析广告的投进作用。官方供给了辅助工具能够帮忙装备。

能够装备下列5种参数:

  • utm_source:标识为您的媒体资源带来流量的广告客户、网站、出版物等,例如:google、newsletter4、billboard。
  • utm_medium:广告前言或营销前言,例如:每次点击费用、横幅广告和电子邮件简报。
  • utm_campaign:产品的详细广告系列称号、标语、促销代码等。
  • utm_term:标识付费搜索关键字。假如您选用人工方法标记付费关键字广告系列,那么您还应运用 utm_term 来指定相应关键字。
  • utm_content:用于区别相似内容或同一广告内的链接。例如,假如您在同一封电子邮件中运用了两个号召性用语链接,就能够运用 utm_content 并为每个链接设置不同的值,以便判别哪个版本的作用更好。

测验

测验过程与上一部分类似,仅仅链接改为运用广告系列参数。

测验链接如下:

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后台的报告->开掘潜在客户->用户获取状况中看到装置现已被计算到(不是实时的),如下图:

Android 下载归因 — GA和Play Install Referrer库