Android广告量监控的技术实现(campaign measurement)
2017-02-08 23:50
501 查看
有这么一种需求,我们找广告平台来推销我们的APP,我们想要知道这个广告平台的转化率到底怎么样。是否可以做到?如果APP是发布在Google Play的话,那么是可以做到的。
当用户点击一条广告,并跳转进了Google Play,Google Play可以获取到广告的链接,而这条链接里带有referrer参数的话,referrer参数里的内容将在APP安装完之后,就发给APP。如果APP有监听这个广播的对象的话,就能成功捕捉到安装的来源信息。
Google Play Campaign Attribution介绍了一种解决方案,这种解决方案可以帮助开发者在Google Play的开发者控制台(developer console)查看到相关信息。
一般的开发者也许读完上面的教程就足矣,但若是没搞懂安卓以及Google Play背后的机制,恐怕还有不少坑要踩,毕竟这个方案并不是很容易测试,只有发布到google play后才能真正的检验是否成功。(Testing Google Play Campaign Measurement介绍了一种并不完全可靠的方法。)
事实上,当用户从Google Play安装完APP后,Google Play作为一个APP本身,会触发一个
如果一个APP中只有一个
这个时候如果照着google提供的方案来实现的话,必然会导致一个死循环。(请自行思考原因)如果鄙弃谷歌的方案,而实现这种方案,也未尝不可。appflyer正是这种方案的实现者之一,这种方案要实现的前提是,在AndroidManifest.xml中一定要注册好所有的receiver,而不是像谷歌官方推荐的那种——只注册一种。
官方文档并没有说明AndroidManifest.xml中书写的前后顺序是否会影响
经测试,android:priority不能影响
除了这种方案外,还有另一种方案,比较可靠,像Tapjoy等SDK采用这种方案:
以下代码拷贝自Stackoverflow用户Mathijs Vogelzang的回答
就是通过meta-data的方式,引入其他几个receiver。
其实了解到这里,就能知道,就算不接入GA,也一样可以实现数据的统计,只不过可能不能使用Google的相关服务而已。
当用户点击一条广告,并跳转进了Google Play,Google Play可以获取到广告的链接,而这条链接里带有referrer参数的话,referrer参数里的内容将在APP安装完之后,就发给APP。如果APP有监听这个广播的对象的话,就能成功捕捉到安装的来源信息。
Google Play Campaign Attribution介绍了一种解决方案,这种解决方案可以帮助开发者在Google Play的开发者控制台(developer console)查看到相关信息。
一般的开发者也许读完上面的教程就足矣,但若是没搞懂安卓以及Google Play背后的机制,恐怕还有不少坑要踩,毕竟这个方案并不是很容易测试,只有发布到google play后才能真正的检验是否成功。(Testing Google Play Campaign Measurement介绍了一种并不完全可靠的方法。)
事实上,当用户从Google Play安装完APP后,Google Play作为一个APP本身,会触发一个
Intent实例,
Intent实例的
action是
"com.android.vending.INSTALL_REFERRER"。这个
Intent实例并非简单的发出,而是先通过
queryBroadcastReceivers的方式先获取一个接受的队列,然后只会对队列的第一个发出
Intent实例!
如果一个APP中只有一个
INSTALL_REFERRER监听对象,那还不会触碰雷区,然后作为开发者,往往更可能接触到一个已经接入众多SDK的安卓项目,有多个Receiver监听
INSTALL_REFERRER。对于这种情况,谷歌在文档中已经说明了一种解决方案(只要一个receiver,其他的不要注册,在代码里显示地(explicitly)整合进去,参考《Testing Google Play Campaign Measurement》一文最后的注意事项),但当某个SDK的Receiver又偏偏提供了另一种解决方案:
List<ResolveInfo> l=context.getPackageManager().queryBroadcastReceivers(intent, 0); // then send the content to each receiver
这个时候如果照着google提供的方案来实现的话,必然会导致一个死循环。(请自行思考原因)如果鄙弃谷歌的方案,而实现这种方案,也未尝不可。appflyer正是这种方案的实现者之一,这种方案要实现的前提是,在AndroidManifest.xml中一定要注册好所有的receiver,而不是像谷歌官方推荐的那种——只注册一种。
官方文档并没有说明AndroidManifest.xml中书写的前后顺序是否会影响
queryBroadcastReceivers的前后顺序,目前只能乐观地认为它会。通过这种方案,把作为gate的receiver放在第一个,就可以完成。
经测试,android:priority不能影响
queryBroadcastReceivers的前后顺序。
除了这种方案外,还有另一种方案,比较可靠,像Tapjoy等SDK采用这种方案:
以下代码拷贝自Stackoverflow用户Mathijs Vogelzang的回答
//This is Appbrain's receiver <receiver android:exported="true" android:name="com.appbrain.ReferrerReceiver" > <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> <meta-data android:name="forward.inmobi" android:value="com.inmobi.adtracker.androidsdk.IMAdTrackerInstallRefererReciever" /> <meta-data android:name="forward.custom" android:value="com.xgame.adproject2.TestReceiver" /> </receiver> //个人补充:其他的不需要写在Manifest, 除非要监听其他的action。
就是通过meta-data的方式,引入其他几个receiver。
其实了解到这里,就能知道,就算不接入GA,也一样可以实现数据的统计,只不过可能不能使用Google的相关服务而已。
相关文章推荐
- 利用Hook技术实现键盘监控
- 利用Hook技术实现键盘监控
- Android 监控程序安装和删除的实现
- Android教程之实现动作感应技术
- Android 教程之实现动作感应技术
- 市面上所有号称"虚拟机","防火墙"的实时监控杀毒软件无一不是使用的IFSHOOK技术.但是同时也有一些朋友不断写MAIL给我打听如何实现读写的监控.下面给出用VTOOLSD写的代码.也就是所有实时杀毒软件的奥秘.同时,很多拦截文件操作的软件,例如对目录加
- Android Debug Bridge(ADB) 技术实现(译)
- Android 使用Mobclix实现广告盈利(http://www.javaeye.com/topic/609639)
- Android教程之实现动作感应技术
- android实现桌面歌词效果的关键技术点
- 通过WMI接口实现 服务器资源管理与监控《一》 WMI 技术简介
- Android教程之实现动作感应技术
- 广告融入游戏技术实现突破
- 运动检测技术在数字化监控中的实现和应用(作者:何峻峰)
- Delphi中通过钩子技术实现键盘监控
- java后台技术(线程实现后台定时监控)
- Delphi中通过钩子技术实现键盘监控
- Android教程之实现动作感应技术
- 实现android的AES加密技术
- Android 中利用反射技术实现加减乘除