Android的 - 使用谷歌Analytics(分析)v4的运动测量 [英] Android - Using Google Analytics v4 Campaign Measurement

查看:432
本文介绍了Android的 - 使用谷歌Analytics(分析)v4的运动测量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已实施谷歌Analytics(分析)运动测量根据的这个指南。然后,我想测试,如果一切按照本指南做工不错。

I have implemented Google Analytics Campaign Measurement according to this guide. Then I want to test if everything works good by following this guide.

我已经添加了这些在 AndroidManifest.xml中

<meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.gms.analytics.globalConfigResource"
        android:resource="@xml/global_tracker" />

<!-- Used for Google Play Store Campaign Measurement-->;
<service android:name="com.google.android.gms.analytics.CampaignTrackingService" />
<receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

和上把这些 MainActivity.java

public enum TrackerName {
    APP_TRACKER, // Tracker used only in this app.
    GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
    ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
}

HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker("UA-xxxxxxxx-1")
                : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
                : analytics.newTracker("UA-xxxxxxxx-1");
        mTrackers.put(trackerId, t);
    } return mTrackers.get(trackerId);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GoogleAnalytics.getInstance(this).getLogger().setLogLevel(Logger.LogLevel.VERBOSE);

    // Get tracker.
    Tracker t = getTracker(TrackerName.APP_TRACKER);

    // Set screen name.
    t.setScreenName("Test Track");

    // Send a screen view.
    t.send(new HitBuilders.AppViewBuilder().build());
}

当我运行下面的命令

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n com.example.gatestapp/com.google.android.gms.analytics.CampaignTrackingReceiver --es  "referrer" "utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign"

我得到这个响应

Broadcast completed: result=0

和这对我的logcat:

and this on my Logcat:

I/GAV4﹕ Thread[GAThread,5,main]: Campaign found: utm_source=testSource

但我没有任何想法如何收集 utm_source 成字符串,这样我就可以有testSource的价值。

But I don't have any idea how to collect the utm_source into a String, so I can have the "testSource" value.

所以,我尝试使用自定义接收器:

So, I tried using Custom Receiver:

public class CustomReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        handleIntent(context, intent);
        Log.d("YES", "IT WORKS!!");
        new CampaignTrackingReceiver().onReceive(context, intent);
    }

    // Handle the intent data
    public void handleIntent(Context context, Intent intent) {
        String referrer = intent.getStringExtra("referrer");
        Log.d("YEES", "IT WORKS!!!");
    }
}

改变了我的接收器标签上的Andr​​oidManifest.xml这样:

changed my the receiver tag on AndroidManifest.xml to this:

<receiver android:name=".app.service.CustomReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
</receiver>

和修改亚行外壳命令如下:

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n com.example.gatestapp/.app.service.CustomReceiver --es  "referrer" "utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign"

广播是成功的,但我的 CustomReceiver 抓到什么!没有对logcat的YES或之间人身。也没有在我的谷歌Analytics(分析)检测命中。有什么毛病我的方法? 我如何收集引用演员?

The broadcast was success but my CustomReceiver catches nothing! None of "YES" or "YEES" on Logcat. Also there is no hit detected on my Google Analytics. Is there anything wrong with my method? How do I collect the referrer extras?

编辑:

我已经成功地使用共享preferences收集引用的额外 。但是,当我发布的Play商店我的应用程序,在引用的额外似乎是丢失。我敢肯定,我没有做的一切,因为我是用<一个href="https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder"相对=nofollow>网址构建器。另外,我还尝试了一些应用示范像在本教程,但它不工作。我的设备没有收到任何附加功能。

I have successfully collect the referrer extras by using SharedPreferences. However, when I publish my app on Play Store, the referrer extras seems to be missing. I'm sure that I did everything correctly, as I was using URL Builder. Also, I have tried some app demonstration like the one in this tutorial, but it is not working. My device is not receiving any extras.

我是不是做了错误的做法?或者,我错过了什么?

Am I doing a wrong approach? Or, did I miss something?

推荐答案

首先,没有你的包名是com.example.gatestapp?因为您在亚行的命令写什么。 其次,在清单中的CampaignTrackingReceiver之前,你把你的app.service.CustomReceiver?也许意图是通过CampaignTrackingReceiver而不是由接收机截获。

First, did your package name is "com.example.gatestapp" ? because that what you wrote in the adb command. Second, did you put your "app.service.CustomReceiver" before the "CampaignTrackingReceiver" in the manifest? maybe the intent is intercept by CampaignTrackingReceiver and not by your receiver.

我secceeded获得通过广播定制的refferels:

I secceeded to get the refferels in custom broadcast by:

Bundle extras = intent.getExtras();
String referrerString = extras.getString("referrer");

这篇关于Android的 - 使用谷歌Analytics(分析)v4的运动测量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆