web-dev-qa-db-fra.com

Comment intégrer Google Analytics dans l'application Android

Bonjour, j'essaie d'intégrer Google Analytics, mais je ne trouve aucune donnée d'analyse qui s'affiche sur le compte Google Analytics que je possède. J'utilise le lien mentionné ci-dessous: -

développeurs.google.com lien 1

certains lien 1

certains lien 2

developer.google link 2

Mais je ne suis pas en mesure d'obtenir le résultat, ni le chemin/chemin correct ou un didacticiel approprié et détaillé sur la façon d'intégrer Google Analytics dans l'application Android.

Mon code est le suivant: -

    public class MainActivity extends Activity {
    GoogleAnalytics tracker;

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

         // Get tracker.
        Tracker t = ((AnalyticsHelper) MainActivity.this.getApplication()).getTracker(
            TrackerName.APP_TRACKER);
     // Set the dispatch period in seconds.
        GAServiceManager.getInstance().setLocalDispatchPeriod(8);
    }

    @Override
    protected void onStart() {
        super.onStart();
        EasyTracker.getInstance(this).activityStart(this);
     // Set the dispatch period in seconds.
        GAServiceManager.getInstance().setLocalDispatchPeriod(8);
    }

    @Override
    protected void onStop() {
        super.onStop();
        EasyTracker.getInstance(this).activityStop(this);
    }
}

Ma classe d'aide Analytics est la suivante: -

public class AnalyticsHelper extends Application {

     // The following line should be changed to include the correct property id.
    private static final String PROPERTY_ID = "UA-xxxxxxxx-x"; // My Property id.

    public static int GENERAL_TRACKER = 0;

    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>();

    public AnalyticsHelper()
    {
        super();
    }

    synchronized Tracker getTracker(TrackerName trackerId) {
        if (!mTrackers.containsKey(trackerId)) {

            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            analytics.getLogger().setLogLevel(LogLevel.VERBOSE);
            Tracker t = null;
            if(trackerId==TrackerName.APP_TRACKER){
                t= analytics.getTracker(PROPERTY_ID);
            }
                 mTrackers.put(trackerId, t);
                }
        return mTrackers.get(trackerId);
    }
}

Et mon fichier xml d'analyse dans le répertoire xml est le suivant: -

    <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.Android.com/tools"
            tools:ignore="TypographyDashes">

     <!--  The following value should be replaced with correct property id. -->
    <string name="ga_trackingId">UA-xxxxxxxx-X</string>

   <!--Enable automatic activity tracking-->
  <bool name="ga_autoActivityTracking">true</bool>

  <!--Enable automatic exception tracking-->
  <bool name="ga_reportUncaughtExceptions">true</bool>

</resources>

Toute aide sera la bienvenue de tout cœur. Merci d'avance.

22
Pravinsingh Waghela

Eh bien, le code ci-dessus donné dans la question fonctionne bien. Tout ce que vous devez faire est après avoir défini votre code et ajouté le fichier Jar Télécharger le fichier Jar Google Analytics sur votre Lib. il suffit d'attendre 24 à 48 heures. et il afficherait tous les événements et analyses de l'application que vous aviez enregistrée.

Réponse modifiée: -

Une fois que vous avez créé votre compte Google Analytic et téléchargé le fichier Jar, ajoutez le fichier Jar dans votre dossier lib de votre application

Implémentation de Google Analytics: -

Eh bien pour la partie analytique, vous avez juste besoin du fichier analytic.xml à inclure dans votre dossier de valeurs mentionné dans la question.

Définissez ensuite private EasyTracker easyTracker = null; Dans votre MainActivity.

Et maintenant, dans votre méthode onCreate(Bundle savedInstanceState), écrivez simplement les lignes de code suivantes. Eh bien, vous pouvez également écrire le code suivant pour tous les Listners, par exemple sur n'importe quel clic de bouton.

    /*
    *For Google Analytics...
    */
    easyTracker = EasyTracker.getInstance(MainActivity.this); // It Tracks your Activity...
    easyTracker.send(MapBuilder.createEvent("SomeValue(StoryPage)",
            "SomeMoreValue(AuthorName) , "SomeMoreValueAgain(StoryTitle)", null).build()); //This line creates the event for keeping logs and other Analytical stuffs concerned to this Activity of Application...
//In the above example we had Tracked the session for the MainActivity and also Analysed how many time this activity was opened, which Author story and which Story was read.

Maintenant, dans votre méthode onStart(), écrivez simplement le code suivant, il démarre la session de suivi et d'analyse de votre activité.

EasyTracker.getInstance(this).activityStart(this);

Et maintenant, dans votre méthode onStop(), écrivez simplement le code suivant, il fermera ou arrêtera la session de suivi pour cette activité.

EasyTracker.getInstance(this).activityStop(this);

Vous pouvez maintenant suivre et analyser votre application et vos activités.

9
Pravinsingh Waghela

J'ai détaillé les étapes d'intégration de Google Analytics dans une application existante ici . Lorsque je publie une nouvelle application, je reviens toujours à ces instructions qui fonctionnent bien.

2
rdmacken
  1. Pour commencer, nous devons créer l'identifiant de piste google analytics Connectez-vous à Goolge analytics et activez l'api et obtenez l'identifiant de piste

  2. Après cela, mettez cet identifiant de piste dans le code .xml ci-dessous


 <?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="ga_sessionTimeout">300</integer>
<bool name="ga_autoActivityTracking">true</bool>
<string name="ga_trackingId">"place your track id"</string>
<string name="ga_sampleFrequency">100.0</string>
<bool name="ga_reportUncaughtExceptions">true</bool>
<screenName name="com.aquadeals.seller.HomeMainActivity">DashBoard Screen</screenName>

3. Après cela, nous pouvons changer le fichier manifeste très important d'ajouter ce code ci-dessous Ajouter des autorisations

4. Changez le nom de votre application en exemple de nom de classe google analytics "MyApplication.Java"

 <application
    Android:name=".app.MyApplication"

5. Après cela, ajoutez des services pour envoyer et recevoir des événements de diffusion en utilisant Internet

 <receiver
        Android:name="com.google.Android.gms.analytics.AnalyticsReceiver"
        Android:enabled="true">
        <intent-filter>
            <action Android:name="com.google.Android.gms.analytics.ANALYTICS_DISPATCH" />
        </intent-filter>
    </receiver>
    <service           Android:name="com.google.Android.gms.analytics.AnalyticsService"
        Android:enabled="true"
        Android:exported="false" />
    <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>
    <service Android:name="com.google.Android.gms.analytics.CampaignTrackingService" />
  1. Avant que ce manifeste change, ajoutez d'abord ces deux classes dans votre application

classe finale publique AnalyticsTrackers {

public enum Target {APP,}
private static AnalyticsTrackers sInstance;
public static synchronized void initialize(Context context)
{
    if (sInstance != null) 
    {
        throw new IllegalStateException("Extra call to initialize analytics trackers");
    }
    sInstance = new AnalyticsTrackers(context);
}
public static synchronized AnalyticsTrackers getInstance() 
{
    if (sInstance == null) {
        throw new IllegalStateException("Call initialize() before getInstance()");
    }
    return sInstance;
}
private final Map<Target, Tracker> mTrackers = new HashMap<Target, Tracker>();
private final Context mContext;
private AnalyticsTrackers(Context context)
{
    mContext = context.getApplicationContext();
}
public synchronized Tracker get(Target target)
{
    if (!mTrackers.containsKey(target)) 
    {
        Tracker tracker;
        switch (target)
        {
            case APP:
                tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker);
                break;
            default:
                throw new IllegalArgumentException("Unhandled analytics target " + target);
        }
        mTrackers.put(target, tracker);
    }
    return mTrackers.get(target);
}

}

Et ajoutez ce AnalyticsApplication.Java

public class AnalyticsApplication extends MultiDexApplication

{

private Tracker mTracker;
private static AnalyticsApplication mInstance;

@Override
public void onCreate()
{
    super.onCreate();
    mInstance = this;
    AnalyticsTrackers.initialize(this);
    AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);
}

synchronized public Tracker getDefaultTracker()
{
    if (mTracker == null)
    {
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(AnalyticsApplication.this);

        mTracker = analytics.newTracker(R.xml.app_tracker);
    }
    return mTracker;
}

public synchronized Tracker getGoogleAnalyticsTracker()
{
    AnalyticsTrackers analyticsTrackers = AnalyticsTrackers.getInstance();
    return analyticsTrackers.get(AnalyticsTrackers.Target.APP);
}

public void trackEvent(String category, String action, String label)
{
    Tracker t = getDefaultTracker();
    t.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());
}

public static synchronized AnalyticsApplication getInstance()
{
    return mInstance;
}

public void trackScreenView(String screenName)
{
    Tracker t = getGoogleAnalyticsTracker();
    t.setScreenName(screenName);
    t.send(new HitBuilders.ScreenViewBuilder().build());
    GoogleAnalytics.getInstance(this).dispatchLocalHits();
}


public void trackException(Exception e)
{
    if (e != null) {
        Tracker t = getGoogleAnalyticsTracker();
        t.send(new HitBuilders.ExceptionBuilder()
             .setDescription( new StandardExceptionParser(this, null)
             .getDescription(Thread.currentThread().getName(), e))
     .setFatal(false)
     .build()
        );
    }
}

}

  1. Et enfin, nous pouvons ajouter du code dans votre classe mainactivity.Java ou vous avez besoin des classes Initialize Step1

    AnalyticsApplication application1;

    tracker privé mTracker;

    Étape: 2

    application1 = (AnalyticsApplication) getApplication ();

    mTracker = application1.getDefaultTracker ();

si vous exécutez ce code dans google analytics montrant le nom d'écran que vous avez mentionné en xml.

Étape: 3 Ajoutez ce code pour l'événement de piste

mTracker.send(new HitBuilders.EventBuilder()

                .setCategory("DashBoard ")

                    .setAction("View Bookings Pressed")

                    .build());

Étape: 4 Suivez le code de comportement d'exception ajouté dans votre bloc de capture

 catch (Exception e) {
         **   AnalyticsApplication.getInstance().trackException(e);**
            e.printStackTrace();
        }

Bon codage ..

1
Venkatesh