sign_up google eventos app android firebase firebase-analytics

android - google - Registro de eventos de Firebase Analytics en la aplicación multiproceso



firebase events sign_up (2)

Firebase Analytics admite aplicaciones multiproceso. ¿Ha probado su aplicación en el dispositivo con los servicios de Google Play o en un emulador sin Servicios de Google Play? Una captura de la salida de logcat con registro de depuración habilitado respondería a la mayoría de estas preguntas.

Para preservar el consumo de batería, los eventos no se cargan más de una vez por hora. Si ha registrado eventos del proceso principal esperado para ver la carga (que generalmente ocurre 15 segundos después de que se grabó el primer evento en dispositivos sin servicios de Google Play), entonces registró más eventos del proceso secundario y esperó otros 15 segundos que no verá el segundo lote de eventos que se cargan. Habrá aproximadamente una hora antes de que se cargue el segundo lote de eventos.

Si dejó el emulador ejecutándose, los eventos de fondo deberían aparecer en su informe dentro de un par de horas.

He integrado Firebase Analytics en mi aplicación, que tiene dos procesos: un proceso en segundo plano y un proceso de IU . Lo que experimenté al utilizar Firebase fue que puedo registrar eventos del proceso de IU pero no desde el proceso en segundo plano .

Puedo ver a través de los registros de Firebase en la consola de Android Studio que, aunque los eventos se registran, pero nunca se planifican para que se carguen en la consola de Firebase cuando se registra desde el proceso en segundo plano . ¿Es este un comportamiento que sigue Firebase Analytics, registrando eventos solo desde un único proceso? Si es así, ¿cómo decide desde qué proceso registrar eventos?

Necesito registrar eventos de ambos procesos para comprender la experiencia completa del usuario, el estado de su aplicación y algunos otros parámetros importantes.

Toda la ayuda es apreciada.


Para registrar eventos de Firebase Analytics de más de un proceso, debe inicializar Firebase manualmente en el segundo proceso. La configuración semiautomatizada de Firebase espera en gran medida aplicaciones de proceso único y requiere una configuración adicional para la mayoría de sus API (excepto informes de fallos).

Básicamente, debes invocar lo siguiente al inicializar el segundo proceso, suponiendo que hayas configurado Firebase a través del archivo google-services.json y el complemento Google Services Gradle:

FirebaseApp.initializeApp(context, FirebaseOptions.fromResource(context))

La parte un poco más complicada puede ser cómo asegurarse de que solo se llame una vez, y solo en el segundo proceso. Un enfoque es imitar lo que hace Firebase para el primer proceso (a través de la fusión de manifiesto ): defina un proveedor de contenido. Entonces, en su Manifiesto, agregue algo como lo siguiente:

<provider android:name=".MyFBProvider" android:authorities="org.mydomain.mytestapp.MyFBProvider" android:process=":myexternalprocess" android:exported="false" android:syncable="false" />

Your ContentProvider se ve esencialmente así, más las anulaciones vacías de todos los métodos abstractos:

public class MyFBProvider extends ContentProvider { private static boolean created = false; @Override public boolean onCreate() { if (created) { // Workaround for https://issuetracker.google.com/issues/37045392 return false; } Context context = getContext(); FirebaseApp.initializeApp(context, FirebaseOptions.fromResource(context)); created = true; // Return false to mimic behavior of FirebaseInitProvider. // It should keep the pseudo ContentProvider from being a real one. return false; } ... }

El uso de ContentProvider garantiza que el código se ejecute antes que cualquier otro durante la inicialización del proceso, y solo en el proceso que especifique.