admin管理员组

文章数量:1604631

应用上架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官方参考文献](https://developer.android/google/play/installreferrer/library)
***国内很多手机没有自带或者安装google play,加入上面代码会回调 FEATURE_NOT_SUPPORTED状态中。所以测试前最好是先上梯子,安装个google play。到这里一切顺利,你应该就能拿到google play给你返回的默认值了,默认获取的信息为:utm_source=googleplay&utm_medium=organic***

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

  <receiver
    android:name="com.berikanuang.android.main.ui.activity.PlayRefferReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" />
            </intent-filter>
        </receiver>
        
        //service
  <service
            android:name="com.google.android.gms.analytics.CampaignTrackingService"
            android:enabled="true"
            android:exported="false" />

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的接入,写一篇博客记录一下吧,希望这篇文章对大家有帮助

本文标签: 渠道来源功能广告android