GoogleAnalytics.getInstance (this) no responde
Tengo un applcation android y le agregué Google Analytics Tracker y funciona (puedo ver las vistas en el panel de Analytics).
El problema es que alguna vez la aplicación comienza a cargar y luego se queda atascado y no responde más. Traté de depurar y descubrí que cuando se trata de la línea
- Android google analytics muestra la forma de visitas de rusia sin siquiera instalar la aplicación en ningún dispositivo
- Google Analytics muestra el iPhone en la aplicación para Android
- Java.lang.NullPointerException com.google.android.gms.analytics.w $ b.run
- El referente de instalación de Android Market está vacío para las instalaciones del mercado. ¿Es un error o un comportamiento normal?
- Uso de Google Analytics para rastrear fragmentos
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
En algún momento no hay respuesta.
¿Por qué sucede esto y cómo puedo solucionarlo?
EDITAR:
He añadido analytics_global_config opcional y sigue ocurriendo
<meta-data android:name="com.google.android.gms.analytics.globalConfigResource" android:resource="@xml/analytics_global_config" />
Analytics_global_config.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_appName">HebConvertor</string> <string name="ga_appVersion">1.0</string> <string name="ga_logLevel">verbose</string> <integer name="ga_dispatchPeriod">1000</integer> <bool name="ga_dryRun">false</bool> </resources>
Mi aplicación:
import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; import android.app.Application; public class MyApplication extends Application { // The following line should be changed to include the correct property id. private static final String PROPERTY_ID = "XX-XXXXXXXX-X"; 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 MyApplication() { super(); } 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.app_tracker); mTrackers.put(trackerId, t); } return mTrackers.get(trackerId); } }
App_tracker.xml:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes"> <!-- tools:ignore="TypographyDashes" --> <!-- The apps Analytics Tracking Id --> <string name="ga_trackingId">XX-XXXXXXXX-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.example.myapplication.MainActivity">MainActivity</screenName> </resources>
Actividad principal:
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } getOverflowMenu(); } @Override public void onStart() { super.onStart(); //Get an Analytics tracker to report app starts & uncaught exceptions etc. GoogleAnalytics.getInstance(this).reportActivityStart(this); } @Override public void onStop() { super.onStop(); //Stop the analytics tracking GoogleAnalytics.getInstance(this).reportActivityStop(this); } public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } protected InterstitialAd interstitial; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); // Get tracker. Tracker t = ((MyApplication)getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER); // Set screen name. t.setScreenName("MainActivity"); ... } } }
- No se puede ejecutar dex: varios archivos dex definen Lcom / google / android / gms / analytics / internal / Command
- ¿Cuál es el propósito de tener dos HitBuilders diferentes (Social y Evento)?
- GetDefaultTracker () de una clase que extiende InputMethodService?
- Enlace analítico de firebase a Google play
- Android google analytics tracker NoClassdefFoundError
- Exportar informe con la Consola del programador - "Guardar los visitantes de la lista"
- Android: ¿Disponibilidad de Google Analytics en Google Play Services?
- No se puede generar APK después de agregar Google Analytics, pero funciona bien en modo de depuración
Este es un problema conocido con Google Play Services 6.5. Vea Android GoogleAnalytics getInstance para más detalles.
El problema se soluciona en Google Play Services 7.0 que se publicó el 2015, 19 de marzo. http://developer.android.com/google/play-services/index.html
Si debe utilizar Play Services 6.5, la solución es configurar Google Analytics desde el código en lugar de xml o pasar a Google Play Services 6.1.
El código siguiente cuando se agrega a su clase de aplicación es equivalente a su configuración de manifiesto:
public class MyApplication extends Application { //... private Tracker mTracker; public synchronized Tracker getAppTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this) mTracker = analytics.newTracker("XX-XXXXXXXX-X"); // Replace with your real tracker id mTracker.enableAutoActivityTracking(true); mTracker.enableExceptionReporting(true); mTracker.setSessionTimeout(-1); // mTracker.setSampleRate(100.0d); // Not needed. The default sampling rate it 100% } return mTracker; } }
- Configuración de src y fondo para FloatingActionButton
- BluetoothLeScanner.startScan () requiere nuevos permisos en Marshmallow?