[英]Google Analytics V4 Campaign measurement Testing is not working
[英]Android - Using Google Analytics v4 Campaign Measurement
我已根據本指南實施了Google Analytics Campaign Measurement 。 然后我想按照本指南測試一切是否正常。
我在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上:
I/GAV4﹕ Thread[GAThread,5,main]: Campaign found: utm_source=testSource
但我不知道如何將utm_source收集到String中,因此我可以獲得“testSource”值。
所以,我嘗試使用自定義接收器:
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!!!");
}
}
將AndroidManifest.xml上的receiver標簽更改為:
<receiver android:name=".app.service.CustomReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
並使用以下命令更改adb shell命令:
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”或“YEES”。 此外,我的Google Analytics上未檢測到任何匹配。 我的方法有什么問題嗎? 我如何收集推薦人的額外內容?
編輯:
我已經使用SharedPreferences
成功收集了引薦來源 。 但是,當我在Play商店發布我的應用時, 推薦人的附加功能似乎丟失了 。 我確信我做的一切都正確,因為我使用的是URL Builder 。 此外,我已經嘗試了一些像本教程中的應用程序演示,但它無法正常工作。 我的設備沒有收到任何額外內容。
我做錯了嗎? 或者,我錯過了什么?
首先,您的包名是“com.example.gatestapp”嗎? 因為那是你在adb命令中寫的。 其次,您是否在清單中的“CampaignTrackingReceiver”之前放置了“app.service.CustomReceiver”? 也許意圖是由CampaignTrackingReceiver攔截而不是你的接收者。
我通過以下方式獲取自定義廣播中的引用:
Bundle extras = intent.getExtras();
String referrerString = extras.getString("referrer");
我發現你的問題對於復制該功能非常有用。
問題看起來像在包的名稱上,我遵循完全相同的過程。
android_manifest.xml
<receiver
android:name="co.tpaga.poc.referer.poc_installreferer.CustomInstallRefererReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
adb命令是:
echo 'am broadcast \
-a com.android.vending.INSTALL_REFERRER \
-n "co.tpaga.poc.referer.poc_installreferer/co.tpaga.poc.referer.poc_installreferer.CustomInstallRefererReceiver" \
--es "referrer" \
"utm_source=test_source&utm_medium=test_medium&utm_term=test_term&utm_content=test_content&utm_campaign=test_name&tappsi_uuid=04442-123123-213213-2323"; \
exit' | ./adb shell
logcat出口是:
03-22 21:58:04.469 22340-22340/co.tpaga.poc.referer.poc_installreferer D/YEES: IT WORKS!!!utm_source=test_source&utm_medium=test_medium&utm_term=test_term&utm_content=test_content&utm_campaign=test_name
03-22 21:58:04.469 22340-22340/co.tpaga.poc.referer.poc_installreferer D/YES: IT WORKS!!
03-22 21:58:04.477 22340-22394/co.tpaga.poc.referer.poc_installreferer D/GAv4: Received installation campaign: content=test_content, keyword=test_term, medium=test_medium, name=test_name, source=test_source
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.