Android – использование Google Analytics v4 Campaign Measurement

В соответствии с этим руководством я внедрил измерение кампании Google Analytics . Затем я хочу проверить, все ли работает хорошо, следуя этому руководству .

Я добавил их на 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 android:name=".app.service.CustomReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver> 

И измените команду оболочки adb следующим образом:

 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 ничего не поймал! Ничего из «YES» или «YEES» в Logcat. Также в моей Google Analytics не обнаружено никакого хита. Что-то не так с моим методом? Как мне собрать дополнительные рефереры ?

РЕДАКТИРОВАТЬ:

Я успешно собираю SharedPreferences используя SharedPreferences . Тем не менее, когда я публикую свое приложение в Play Маркете, дополнительные функции реферера, похоже, отсутствуют . Я уверен, что сделал все правильно, поскольку использовал URL Builder . Кроме того, я попытался продемонстрировать некоторые приложения, как в этом уроке , но он не работает. Мое устройство не получает никаких дополнительных услуг.

Я делаю неправильный подход? Или я что-то пропустил?

Во-первых, ваше имя пакета было «com.example.gatestapp»? Потому что это то, что вы написали в команде adb. Во-вторых, вы положили свой «app.service.CustomReceiver» перед «CampaignTrackingReceiver» в манифесте? Возможно, намерение является перехватом 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