2016-04-07 19 views
1

Ich versuche, Google Analytics zu meiner aktuellen App hinzufügen, aber ich kann nicht verstehen, wie Sie es in meinem App-Code implementieren. Ich möchte es auf mehrere Fragmente setzen, darunter ist eine der Klassen.Google Analytics auf Android-App mit Fragmenten

Ich verwende Google-Guide: [https://developers.google.com/analytics/devguides/collection/android/v4/#activity-or-fragment][1] Und ich verstehe immer noch nicht, wie es zu meinen aktuellen Seiten zu verbinden.

Das sind meine Codes:

LoginActivity2.java:

package com.example.tomgoldberg.tasker; 

import android.os.Bundle; 
import android.support.design.widget.Snackbar; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.text.TextUtils; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 

import com.google.android.gms.analytics.HitBuilders; 
import com.google.android.gms.analytics.Tracker; 

/** 
* Created by TomGoldberg on 20.3.16. 
*/ 
public class LoginActivity2 extends Fragment implements View.OnClickListener , View.OnFocusChangeListener { 
    static FragmentManager fragmentManager; 
    private static final String TAG = "LoginActivity2"; 

    View myView; 
    String email , password; 
    EditText _emailTextView; 
    EditText _passwordTextView; 
    private Button _logInView; 
    private Button _signup; 

    boolean verEmail = false; 
    boolean verPass = false; 

    boolean insert = false; 
    private Tracker mTracker; 

    //static DatabaseHelper _myDB; 
    FragmentActivity faActivity ; 


    public LoginActivity2() { 
     //Functions.initializeData_forPendingTasks(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     myView = inflater.inflate(R.layout.activity_login, container, false); 
     fragmentManager = getFragmentManager(); 
     MyApplication application = (MyApplication) faActivity.getApplication(); 
     mTracker = application.getDefaultTracker(); 

     //Functions._drawerH1 = (TextView)myView.findViewById(R.id.navigationDrawer_h1); 
     //Functions._drawerH2 = (TextView)myView.findViewById(R.id.navigationDrawer_h2); 


     _logInView = (Button)myView.findViewById(R.id.loginBottun); 
     _logInView.setOnClickListener(this); 

     _signup = (Button)myView.findViewById(R.id.signUp_button); 
     _signup.setOnClickListener(this); 

     _emailTextView = (EditText)myView.findViewById(R.id.email_login_text); 
     //_emailTextView.setOnFocusChangeListener(this); 

     _passwordTextView = (EditText)myView.findViewById(R.id.password_login_text); 
     //_passwordTextView.setOnFocusChangeListener(this); 

     faActivity = getActivity(); 
     Functions._myDB = new DatabaseHelper(faActivity); 
     Functions.insert(); 
     Functions.initializeData_forAllTasksFragment(); 
     Functions.initializeData_forPendingTasks(); 
     Functions.initializeData_forPriorityTasks(); 
     Functions.initializeData_forCategoryTasks(); 

     return myView; 
    } 

    @Override 
    public void onClick(View v) { 
     if (v.getId() == _logInView.getId()){ 
      email = _emailTextView.getText().toString(); 
      password = _passwordTextView.getText().toString(); 
      try{ 
       if( Functions.checkingManager(email,password) ){ 
        Snackbar.make(myView.findViewById(R.id.Login1mainLayout), "Welcome back manager " + Functions._userName , Snackbar.LENGTH_LONG) 
          .setAction("Action", null).show(); 
        try{ 
         NavigationDrawer._drawerH1.setText(Functions._userName); 
         NavigationDrawer._drawerH2.setText(Functions._userEmail); 
        } catch (Exception E){ 
         System.out.println("Unable to change...--> "+E.getMessage()); 
        } 
        Fragment fragment = new MainMenu(); 
        android.support.v4.app.FragmentTransaction transaction = fragmentManager.beginTransaction(); 
        transaction.replace(R.id.fragment_container, fragment); 
        transaction.addToBackStack("stack_MainMenu_after_LOGIN"); 
        transaction.commit(); 

        } 
       else if (Functions.checkingMember(email, password)){ 
        Snackbar.make(myView.findViewById(R.id.Login1mainLayout), "Welcome back member " + Functions._userName , Snackbar.LENGTH_LONG) 
          .setAction("Action", null).show(); 
        try{ 
         NavigationDrawer._drawerH1.setText(Functions._userName); 
         NavigationDrawer._drawerH2.setText(Functions._userEmail); 
        } catch (Exception E){ 
         System.out.println("Unable to change...--> "+E.getMessage()); 
        } 
        Fragment fragment = new MainMenu(); 
        android.support.v4.app.FragmentTransaction transaction = fragmentManager.beginTransaction(); 
        transaction.replace(R.id.fragment_container, fragment); 
        transaction.addToBackStack("stack_MainMenu_after_LOGIN"); 
        transaction.commit(); 
       } 
       else { 
        _logInView.setError("Some error"); 
        Snackbar.make(myView.findViewById(R.id.Login1mainLayout), "Please provide your Email and Password", Snackbar.LENGTH_LONG) 
          .setAction("Action", null).show(); 
        _logInView.setError(null); 
       } 
      } catch (Exception e){ 
       _logInView.setError("Some error"); 
       Snackbar.make(myView.findViewById(R.id.Login1mainLayout), "Please provide your Email and Password", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
       _logInView.setError(null); 
      } 
     } 
     else if (v.getId() == _signup.getId()){ 
      Fragment fragment = new SignUpAsManager(); 
      android.support.v4.app.FragmentTransaction transaction = fragmentManager.beginTransaction(); 
      transaction.replace(R.id.fragment_container, fragment); 
      transaction.addToBackStack("stack_SignUp"); 
      transaction.commit(); 
     } 

    } 

    @Override 
    public void onFocusChange(View v , boolean hasFocus) { 
     if (v.getId() == _emailTextView.getId() && !hasFocus) { 
      verifyEmail(); 
      _emailTextView = (EditText)myView.findViewById(R.id.email_login_text); 
     } 
     if (v.getId() == _passwordTextView.getId() && !hasFocus) { 
      verifyPassword(); 
      _passwordTextView = (EditText) myView.findViewById(R.id.password_login_text); 
     } 
    } 

    public void verifyEmail(){ 
     String emailToCheck = _emailTextView.getText().toString(); 
     if ( TextUtils.isEmpty(emailToCheck) || Functions.hasNoLetters(emailToCheck) || Functions.isEmail(emailToCheck)) { 
      _emailTextView.setError("Please Provide Your Email Address"); 
      verEmail = false; 
     } 
     else if( TextUtils.isDigitsOnly(emailToCheck) ) { 
      _emailTextView.setError("Email Address Only"); 
      verEmail = false; 
     } 
     else { 
      System.out.println("verifyEmail"); 
      try{ 
       verEmail = true ; 
       _logInView.setError(null); 
      } 
      catch (Exception e){ 
       System.out.println(e.getMessage()); 
      } 
     } 
    } 

    public void verifyPassword(){ 
     String passwordToCheck = _passwordTextView.getText().toString(); 
     if (TextUtils.isEmpty(passwordToCheck)||Functions.hasNoLetters(passwordToCheck)){ 
      _passwordTextView.setError("Please Provide Your Password"); 
      System.out.println("verifyPassword"); 
      verPass = false; 
     } 
     else { 
      try{ 
       verPass = true; 
       _logInView.setError(null); 
      } 
      catch (Exception e) { 
       System.out.println(e.getMessage()); 
       System.out.println("verifyPassword"); 
      } 
     } 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     Log.i(TAG, "Setting screen name: " + name); 
     mTracker.setScreenName("Image~" + name); 
     mTracker.send(new HitBuilders.ScreenViewBuilder().build()); 

     mTracker.send(new HitBuilders.EventBuilder() 
       .setCategory("Action") 
       .setAction("Share") 
       .build()); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

MyApplication.java:

package com.example.tomgoldberg.tasker; 

import android.app.Application; 

import com.google.android.gms.analytics.GoogleAnalytics; 
import com.google.android.gms.analytics.Tracker; 

/** 
* Created by tommyahav on 07/04/2016. 
*/ 
public class MyApplication extends Application { 
    private Tracker mTracker; 
    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; 
    } 
} 

Analytics.xml:

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

<!--Replace placeholder ID with your tracking ID--> 
<string name="ga_trackingId">UA-75923329-1</string> 

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

<!--Disable automatic exception tracking--> 
<bool name="ga_reportUncaughtExceptions">false</bool> 

</resources> 

Danke für die Hilfe . Tom

+0

ya. Es ist richtig. Was ist dein Problem? Welchen Fehler gab es beim Ausführen der Anwendung? ? –

+0

Fehler: Ausführung fehlgeschlagen für Task ': app: mergeDebugResources'. > [xml/global_tracker]/Benutzer/tommyahav/Downloads/Tasker-master 4/app/src/main/res/xml/global_tracker.xml \t [xml/global_tracker]/Benutzer/tommyahav/Downloads/Tasker-master 4/app/build/generated/res/google-services/debug/xml/global_tracker.xml: Fehler: Duplicate resources – drorAlfasi

+0

Es funktioniert nicht, ich löschte die doppelte Datei, aber ich bekomme immer noch Fehler. Jetzt bekomme ich das: name ---> Fehler: (203, 43) error: kann den Namen der Variablen nicht finden, unter: public boolean onOptionsItemSelected (MenuItem Element) auf LoginActivity.java Teil. name sollte der Seitenname sein, der auf der Google Analytics-Seite angezeigt werden soll. – drorAlfasi

Antwort

1

Diese Bildschirmnamen und Ereignisse von Google Analytics werden nicht in Ihrer Anwendungsprotokolldatei angezeigt.

Sie müssen gehen Google Analytics website und melden Sie sich mit Ihrem E-Mail-Konto, das Sie zum Erstellen der Konfigurationsdatei verwendet haben.

Nach dem Login müssen Sie Ihr Projekt wählen Standardansicht und dann werden Sie auf Ihre App Übersichtsseite weitergeleitet.

Und diese Seite mit den Menüs auf der linken Seite zur Verfügung gestellt. Sie müssen wählen Echtzeit -> Screens Option, um die aktuellen Aktionen zu beobachten.

Jede Aktion, die Sie vorgenommen haben, wird nur nach 3-5 Minuten angezeigt.

+0

Ich habe meine Tracking-ID eingegeben, die ich von der Google Analytics-Website erhalten habe. Außerdem habe ich die .json-Datei heruntergeladen und sie unter den App-Ordner in meinen Projektdateien hinzugefügt. Ich versuche, GA (Google Analytics) zu meinem aktuellen Projekt hinzuzufügen und den Traffic meiner App vom GA-Bildschirm aus zu sehen. Ich habe mehrere Erklärungen dazu gesehen und sie fügen Code mit den Aktivitäten hinzu, denen sie folgen wollen. – drorAlfasi

+0

Okk .. Also, was ist dein Problem. Auf welche Art und Weise verfolgen Sie das Ergebnis nicht? Bitte erklären Sie mir viel besser. –

+0

Ich möchte wissen, wie Code von Google auf meinem Projekt implementieren. – drorAlfasi