Android 应用Google Play广告推广渠道来源区分功能的接入

前提是你 提交于 2020-01-13 16:39:34

应用上架google play之后随之而来的问题是推广,多广告渠道投放后,如何区分用户是通过哪个渠道广告点击进来安装我们的应用。Google官方提供的有两种解决方案,我也是刚摸索清楚,于是想着记录下来:
一,通过installReferrer获取
1,集成installReffer
在app build.gradle文件中添加,我个人比较偏向于这种方式来集成,不要问我为什么,答案两个字:简单。但是弊端也是很明显的,相对于我介绍的第二种方式来说测试起来可能比较困难,有利有弊,根据自己的实际情况去权衡
implementation ‘com.android.installreferrer:installreferrer:1.1’
2,上完整代码
private void getConnect() {
mReferrerClient = InstallReferrerClient.newBuilder(this).build();
mReferrerClient.startConnection(installReferrerStateListener);
}
InstallReferrerStateListener installReferrerStateListener = new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
// Connection established 已建立连接
ReferrerDetails response = null;
try {
response = mReferrerClient.getInstallReferrer();
if (response != null) {
response.getInstallReferrer();
response.getReferrerClickTimestampSeconds();
response.getInstallBeginTimestampSeconds();
mPresenter.uploadRefferInfo(response.getInstallReferrer(), response.getReferrerClickTimestampSeconds(), response.getInstallBeginTimestampSeconds());
MyPrefUtils.putString(“reffer”, response.getInstallReferrer());
}
Log.e(“isFirst”, response.getInstallReferrer() + “------>” + response.getInstallBeginTimestampSeconds() + “---------->” + response.getReferrerClickTimestampSeconds());
// MyToastUtil.showToast(response.getInstallReferrer());
} catch (RemoteException e) {
// Log.e(“isFirst”, e.getMessage());
MyPrefUtils.putString(“reffer”, “”);
e.printStackTrace();
}
break;
case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
// API not available on the current Play Store app 已安装的Play Store应用程序不支持的Referrer API
// Log.e(“isFirst”, “FEATURE_NOT_SUPPORTED”);
MyPrefUtils.putString(“reffer”, “”);
break;
case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE:
// Connection could not be established 由不正确的用法引起的一般错误
MyPrefUtils.putString(“reffer”, “”);
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
getConnect();
}
};

google官方参考文献
这里有个坑我可以提醒下大家,由于天朝网络墙很高,国内很多手机没有自带或者安装google play,加入上面代码会回调 FEATURE_NOT_SUPPORTED状态中。所以测试前最好是先科学上网,安装个google play。到这里一切顺利,你应该就能拿到google play给你返回的默认值了,默认获取的信息为:utm_source=google-play&utm_medium=organic

二,通过analytics来获取
1,集成
implementation ‘com.google.android.gms:play-services-analytics:17.0.2’
2,老规矩上代码
//manifest文件中注册广播接收者




    //service

public class DemoRefferReceiver extends CampaignTrackingReceiver {
@Override
public void onReceive( Context context,Intent intent) {

    String referrer = intent.getStringExtra("referrer");
   // MyToastUtil.showToast(referrer );
   // Log.e("ReferrerDemo", referrer);

}

}

写完上述代码,调试的话 在android studio控制台里面输入命令行,举个栗子:
adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n 你的组件名/你的包名.DemoRefferReceiver --es “referrer” “utm_source%3Dgoogle%26utm_medium%3Dbanner%26utm_term%3Drunning%252Bshoes%26utm_content%3Dtextlink%26utm_campaign%3Dspring_sale”
把里面的组件名,包名换成自己的就OK.
另外,我这里自己测试了下发送广播的方法,一样可以测试通过,比较简单:
//测试发送广播的接口
Intent intent = new Intent();
intent.setAction(“com.android.vending.INSTALL_REFERRER”);
intent.putExtra(“referrer”,“1232”);
intent.setComponent( new ComponentName( “组件名” ,
“包名.DemoRefferReceiver”) );
sendBroadcast(intent);
然后去你的BroadCastReceiver里面去看有没有收到消息吧~
前方有坑: 重要的事情说三遍~
我上面提到的组件名,是appId ,网上一些不良博客上面都写的包名
我上面提到的组件名,是appId ,网上一些不良博客上面都写的包名
我上面提到的组件名,是appId ,网上一些不良博客上面都写的包名
最近在研究google play上面的数据买点数据fireBase的接入,有点焦头烂额,等我摸清楚了再来写一篇博客记录一下吧,希望这篇文章对大家有帮助~~~~~~~over.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!