Google Analytics recoge un número de versión incorrecto para mi aplicación para Android
Estoy agregando Google Analytics en mi aplicación. Cuando voy a Real Time > Overview
Veo 1.0
en la App Version
. Mi pregunta es ¿de dónde saca Google Analytics este número 1.0
?
- Implementar Google Analytics para las pantallas de juegos Android LibGDX
- ¿Cómo pasar de Google Analytics a Firebase-Analytics?
- Detección automática de actividad de Google Analytics: ¿puede excluir una sola actividad de esto?
- ¿Cómo configurar opciones de ejecución en seco y nivel de registro a través de XML en SDK de Google Analytics v4 para Android?
- ¿Cómo usar la instalación de referencias de seguimiento de Google Analytics desde Google Play?
Así es como estoy iniciando Analytics en el onCreate()
de mi Activity
lanzador:
analytics = GoogleAnalytics.getInstance(MainDrawerActivity.this); analytics.setLocalDispatchPeriod(1800); tracker = analytics.newTracker("UA-XXXXXX-X"); // Replace with actual tracker/property Id tracker.enableExceptionReporting(true); tracker.enableAdvertisingIdCollection(true); tracker.enableAutoActivityTracking(true);
Mi proyecto tiene varios archivos gradle. Los estoy pegando a todos aquí:
Aquí está mi archivo gradle y también mi manifiesto de Android: build.gradle : (para mi proyecto: xxx …)
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.1.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } }
Build.gradle : (para mi módulo: app)
android { compileSdkVersion 22 buildToolsVersion "22.0.0" defaultConfig { applicationId "xxx.xxx.xxx" minSdkVersion 16 targetSdkVersion 22 versionCode 58 versionName "2.0.13" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { encoding "UTF-8" sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } lintOptions { abortOnError false } }
Build.gradle para Module: circularImageView (esto es un proyecto de biblioteca) apply plugin: 'com.android.library'
android { compileSdkVersion 22 buildToolsVersion "22.0.0" defaultConfig { minSdkVersion 11 targetSdkVersion 19 versionCode 60 versionName "2.0.14" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } }
Comienzo de mi Manifiesto :
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxx.xxxx.xxxxxxxx" android:installLocation="internalOnly" android:versionCode="58" android:versionName="2.0.13" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
Otro punto a tener en cuenta es que antes de la versión "1.0" vista, estaba en Eclipse pero esta es la primera vez que estoy en Android Studio, pero usé el método Gradle para agregar Google Analytics a mi cuenta.
- Seguimiento del uso de la aplicación para Android
- "Lo sentimos, no hay datos para esta métrica" Android Developers Console (¿Qué significa esto?)
- Android GoogleAnalytics getInstance
- Google Analytics para Android v2 Seguimiento de campaña no funciona
- ¿Cuál es el impacto de tener varias herramientas de generación de informes de fallos en la aplicación para Android
- ¿Formato de mensaje de excepción para contener el stacktrace entero en Google Analytics para Android?
- Ampliar broadcastreceptor y seguimiento de Google Analytics INSTALL_REFERRER
- Precisión de ubicación de Google Analytics para Android
Puede utilizar el rastreador global proporcionado por Google Analytics v4. Antes de comenzar a agregar el rastreador global dentro de sus aplicaciones, tengamos esta estructura primero:
app_tracker.xml
<resources> <!-- The apps Analytics Tracking Id --> <string name="ga_trackingId">UX-XXXXXXXXX-X</string> <!-- Percentage of events to include in reports --> <string name="ga_sampleFrequency">100.0</string> <!-- Enable automatic Activity measurement --> <bool name="ga_autoActivityTracking">true</bool> <!-- catch and report uncaught exceptions from the app --> <bool name="ga_reportUncaughtExceptions">true</bool> <!-- How long a session exists before giving up --> <integer name="ga_sessionTimeout">-1</integer> <!-- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to substitute for the full length canonical Activity name in screen view hit. In order to specify an alternate screen name use an <screenName> element, with the name attribute specifying the canonical name, and the value the alias to use instead. --> <screenName name="com.mypackage.example.MainActivity">Home Screen</screenName> </resources>
ecommerce_tracker.xml
<resources> <integer name="ga_sessionTimeout">60</integer> <!-- The following value should be replaced with correct property id. --> <string name="ga_trackingId">UX-XXXXXXXXX-X</string> </resources>
global_tracker.xml
<!-- enter your app's name --> <string name="ga_appName">My App Name</string> <!-- enter the current app's versionName --> <string name="ga_appVersion">2.0.13</string> <!-- the Local LogLevel for Analytics --> <string name="ga_logLevel">verbose</string> <!-- how often the dispatcher should fire --> <integer name="ga_dispatchPeriod">30</integer> <!-- Treat events as test events and don't send to google --> <bool name="ga_dryRun">false</bool> <!-- The screen names that will appear in reports --> <screenName name="com.mypackage.example.MainActivity">Home Screen</screenName>
A continuación, cree una nueva Clase Java denominada App
y extiéndala con Application
:
import android.app.Application; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; import java.util.HashMap; /** * Custom implementation of android.app.Application. The android:name attribute in the * AndroidManifest.xml application element should be the name of your class (".MyApp"). Android will * always create an instance of the application class and call onCreate before creating any other * Activity, Service or BroadcastReceiver. */ public class App extends Application { // The following line should be changed to include the correct property id. private static final String PROPERTY_ID = "UX-XXXXXXXXX-X"; //Logging TAG private static final String TAG = "App"; 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, } HashMap<TrackerName, Tracker> mTrackers = new HashMap<>(); public App() { super(); } public synchronized Tracker getTracker(TrackerName trackerId) { if (!mTrackers.containsKey(trackerId)) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(R.xml.app_tracker) : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(PROPERTY_ID) : analytics.newTracker(R.xml.ecommerce_tracker); mTrackers.put(trackerId, t); } return mTrackers.get(trackerId); } }
Alterar tu esclavo manifiesto:
<application android:name=".App" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name"> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <!-- Google Analytics Version v4 needs this value for easy tracking --> <meta-data android:name="com.google.android.gms.analytics.globalConfigResource" android:resource="@xml/global_tracker" /> <!-- Optionally, register AnalyticsReceiver and AnalyticsService to support background dispatching on non-Google Play devices --> <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"/> <!-- Optionally, register CampaignTrackingReceiver and CampaignTrackingService to enable installation campaign reporting --> <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" android:enabled="true"/> <!-- ... --> </application>
Y finalmente, golpeó el rastreador dentro de la clase MainActivity
:
private Tracker tracker; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tracker = ((App) getApplication()).getTracker(App.TrackerName.APP_TRACKER); tracker.setScreenName("Home Screen"); tracker.send(new HitBuilders.EventBuilder().build()); ... } @Override protected void onStart() { super.onStart(); GoogleAnalytics.getInstance(this).reportActivityStart(this); } @Override protected void onStop() { GoogleAnalytics.getInstance(this).reportActivityStop(this); super.onStop(); }
Voila! ¡Google Analytics está activado! Para más información, ver:
Configuración avanzada – Android SDK v4
Google Analytics SDK v4 para Android – Introducción
ETIQUETA:
- Tutorial de Google Analytics para Android
- Configuración de Google Analytics
- Google Analytics v4
- Ejemplo de Google Analytics
Obtiene la versión del contexto que se pasa a GoogleAnalytics.getInstance(context)
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); packageInfo.versionName;
De acuerdo con la documentación de PackageInfo
:
El nombre de versión de este paquete, tal como se especifica por el atributo versionName de la etiqueta.
Además, para que obtenga con precisión los datos de su aplicación, debe crear el Tracker
de una clase que extiende la Application
public class MyApp extends Application { public Tracker tracker; ..... public Tracker getTracker() { if (tracker == null) { tracker = GoogleAnalytics.getInstance(this); ....... } return tracker; } }
- Tamaño de icono de barra de acción en Android 4.2
- Cómo comprimir JSON con gzip en Rails para Android?