Я внедрил Измерение кампании Google Analytics в соответствии с this guide. Затем я хочу проверить, все ли работает хорошо, следуя this guide.Android - Использование Google Analytics v4 Измерение кампании
Я добавил их на 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 в строку, так Я могу получить значение «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 не обнаружено никакого хита. Что-то не так с моим методом? Как мне собрать referrer Дополнительные услуги?
EDIT:
Я успешно собрать ссылающейся статистов с помощью SharedPreferences
. Однако, когда я публикую свое приложение в Play Маркете, referrer добавляет, кажется, отсутствует. Я уверен, что все сделал правильно, поскольку использовал URL Builder. Кроме того, я попытался продемонстрировать некоторые приложения, например, в this tutorial, но он не работает. Мое устройство не получает никаких дополнительных услуг.
Я делаю неправильный подход? Или я что-то пропустил?