Zaimplementowałem Firebase Analytics. Działa dobrze. Chcę również korzystać z Google Analytics. Na podstawie dyskusji here mam włączone poniższy obiekt w Google services.jsonDodawanie Firebase Analytics i Google Analytics w aplikacji Android
"analytics_service": {
"status": 2,
"analytics_property": {
"tracking_id": "<your tracking id>"
}
},
Google Analytics, mam Tracker Class
public class PuzzleGamesTracker extends Application {
// The following line should be changed to include the correct property id.
private static final String PROPERTY_ID = "<your tracking id>";
private Tracker mTracker;
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
/**
* Gets the default {@link Tracker} for this {@link Application}.
* @return tracker
*/
synchronized public Tracker getDefaultTracker() {
if (mTracker == null) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
// To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
mTracker = analytics.newTracker(R.xml.global_tracker);
}
return mTracker;
}
}
Wykorzystanie
public void sendToGoogleAnalytics(String arg) {
// TODO Auto-generated method stub
sendToFireBase();
PuzzleGamesTracker application = (PuzzleGamesTracker) getApplication();
Tracker mTracker = application.getDefaultTracker();
mTracker.setScreenName(arg);
mTracker.send(new HitBuilders.AppViewBuilder().build());
}
public void sendToFireBase() {
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "Test_Item 1A");
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "Test_Name 1A");
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Test_Image 1");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "Test_Item B");
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "Test_Name B");
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Test_Image 1");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "Test_Item 2A");
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "Test_Name 2A");
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Test_Image 2");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
}
Scenariusz błędu
Jeśli nie zamieściłem poniższego obiektu google analytics w google-services.json, wówczas Fire Base działa poprawnie.
"analytics_service": {
"status": 2,
"analytics_property": {
"tracking_id": "<your tracking id>"
}
},
Kiedy to obiekt w Google Analytics Google services.json, następnie otrzymuję ten błąd poniżej
Error:Execution failed for task ':android:mergeReleaseResources'.
> [xml/global_tracker] C:\Users\android\build\generated\res\google- services\release\xml\global_tracker.xml [xml/global_tracker] C:\Users\android\res\xml\global_tracker.xml: Error: Duplicate resources
Pytanie 1. Czy muszę usunąć ecommerce_tracker.xml i global_tracker.xml? Używa go już klasa PuzzleGamesTracker. Jak przezwyciężyć? 2. Proszę prowadź mnie tak, że mogę mieć zarówno realizację FA i GA udaną
dlaczego wdrażasz dwie takie same rzeczy? – johnrao07
To nie to samo. Nie jestem OP, ale mam ten sam problem. Jeden z moich klientów poprosił mnie o dodanie analityki FireBase, gdy już mają Google Analytics w aplikacji. Mają swoje biznesowe powody i obydwaj powinni mieć możliwość pracy obok siebie, skoro wszyscy są również produktami Google. – breakline