android 集成Play Install Referrer

android 集成Play Install Referrer

旧版

在之前集成Google广告归因是采用广播的形式,定义一个匹配INSTALL_REFERRER的广播接收器:

   <receiver
            android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" />
            </intent-filter>
        </receiver>

或者自己定义一个也是可以的。
旧版其中逻辑就是,Google Play提供了这么一个广播机制,利用归因网址创建器生成网址—google-play-url-builder。生成一个地址后,打开链接会到google-play对于的app下载页面(也可以通过网页的play商店推送至app),在用户下载后发送一条携带归因参数的广播到app,完成信息的采集。

相关介绍

归因网址创建器介绍:
在这里插入图片描述
例如,生成的网址:
https://play.google.com/store/apps/details?id={你的包名}&referrer=utm_source%3Dtaobao%26utm_medium%3Dbanner%26utm_term%3Drunning%26utm_content%3Ddebug%26anid%3Dadmob

广告参数介绍:
在这里插入图片描述

新版-Play Install Referrer

由于广播的不可靠性和不安全性,其他app可以偷偷摸摸主动发送INSTALL_REFERRER广播去抢归因,完全就说欺诈行为。才有新版的Play Install Referrer。
新版的逻辑是用户点击推广链接到应用市场安装APP,应用市场就会获取推广参数传递,APP安装后,首次打开的时APP就会主动通过应用市场的API去查询获取渠道信息,然后上传。之间的通信是采用AIDL语言来实现的,可靠又安全。

集成也很简单:
app下的build.gradle下配置:

implementation "com.android.installreferrer:installreferrer:2.2"

在启动的时候去监听:

 private lateinit var referrerClient: InstallReferrerClient
    private fun installReferrer(){
        referrerClient = InstallReferrerClient.newBuilder(this).build()
        referrerClient.startConnection(object : InstallReferrerStateListener {

            override fun onInstallReferrerSetupFinished(responseCode: Int) {
                when (responseCode) {
                    InstallReferrerClient.InstallReferrerResponse.OK -> {
                        // Connection established.
                        val response = referrerClient.installReferrer
                        ZusLog.myLog("referrerClient url: ${response.installReferrer}")
                        ZusLog.myLog("referrerClient click: ${response.referrerClickTimestampSeconds.toString()}")
                        ZusLog.myLog("referrerClient click-server: ${response.referrerClickTimestampServerSeconds}")
                        ZusLog.myLog("referrerClient install: ${response.installBeginTimestampSeconds.toString()}")
                        ZusLog.myLog("referrerClient install-server: ${response.installBeginTimestampServerSeconds}")

                        ZusLog.myLog("referrerClient version: ${response.installVersion}")

                        referrerClient.endConnection()
                    }
                    InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {
                        // API not available on the current Play Store app.
                    }
                    InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> {
                        // Connection couldn't be established.
                    }
                }
            }

            override fun onInstallReferrerServiceDisconnected() {

            }
        })
    }

然后调用完成即可关闭了。我这里仅打印log,一般是要埋点的。

测试结果:

url: utm_source=taobao&utm_medium=banner&utm_term=running&utm_content=debug&anid=admob
 click: 1627635033
 click-server: 1627635034
 install: 1627635036
 install-server: 1627635036
 version: 7.12.0

再卸载后,直接adb安装,测试结果:

url: utm_source=google-play&utm_medium=organic
click: 0
click-server: 0
install: 1627635036
install-server: 1627635036
version: 7.12.0 

其实我adb安装的包,版本为7.13.0,google商店的线上包为7.12.0,所以这个版本信息还是以Google-play 的版本号为主。

覆盖安装测试:安装时间还是第一次安装的时间。
卸载后安装后还是重google play 打开 安装时间还是上次。
卸载后,重新打开新的链接安装,安装时间为当前。

如何测试?

由于链接是到google商店的,而上面对应的可能是没有Play Install Referrer代码,这里提供两种方法:1,打测试人员的包测试。2,链接到google商店后,点击安装进行下载,同时在用adb安装含Play Install Referrer代码的包,再取消google上面的下载就行了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值