Primeros pasos con Performance Monitoring para las plataformas de Apple

Antes de comenzar

Si aún no lo has hecho, agrega Firebase a tu proyecto de Apple.

Paso 1: Agrega Performance Monitoring a la app

Después de agregar el SDK de Performance Monitoring, Firebase comienza a recopilar datos automáticamente sobre el renderizado de pantallas de tu app, así como datos acerca de su ciclo de vida (como el tiempo de inicio de la app) y las solicitudes de red HTTP/S.

Usa Swift Package Manager para instalar y administrar las dependencias de Firebase.

  1. En Xcode, con tu proyecto de app abierto, navega a File > Add Packages.
  2. Cuando se te solicite, agrega el repositorio del SDK de Firebase para plataformas de Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Elige la biblioteca de Performance Monitoring.
  5. Agrega la marca -ObjC a la sección Other Linker Flags de la configuración de compilación de tu destino.
  6. Cuando termines, Xcode comenzará a resolver y descargar automáticamente tus dependencias en segundo plano.

A continuación, configura el módulo de Firebase:

  1. Importa el módulo FirebaseCore en tu UIApplicationDelegate, así como en cualquier otro módulo de Firebase que use el delegado de la app. Por ejemplo, para usar Cloud Firestore y Authentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configura una instancia compartida de FirebaseApp en el método application(_:didFinishLaunchingWithOptions:) del delegado de la app:

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Si usas SwiftUI, debes crear un delegado de la aplicación y adjuntarlo al struct de tu App a través de UIApplicationDelegateAdaptor o NSApplicationDelegateAdaptor. También debes inhabilitar el swizzling del delegado de la app. Para obtener más información, consulta las instrucciones de SwiftUI.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Vuelve a compilar la app.

Paso 2: Genera eventos de rendimiento para obtener una visualización inicial de los datos

Firebase comienza a procesar los eventos cuando agregas correctamente el SDK a tu app. Si aún estás desarrollando de manera local, interactúa con la app a fin de generar eventos para la recopilación y el procesamiento de datos iniciales.

  1. Sigue desarrollando la app con un emulador o un dispositivo de prueba.

  2. Puedes generar eventos si alternas varias veces la ejecución de la app entre el primer y segundo plano, interactúas con la app mediante la navegación por las pantallas o activas solicitudes de red.

  3. Ve al panel Rendimiento de Firebase console. Deberías ver tus datos iniciales en pocos minutos.

    Si no ves los datos iniciales, revisa las sugerencias para solucionar problemas.

Paso 3: Revisa los mensajes de registro de los eventos de rendimiento (opcional)

  1. Habilita el registro de depuración de la siguiente manera:

    1. En Xcode (v14.1 como mínimo), selecciona Product > Scheme > Edit scheme.
    2. Selecciona Run en el menú de la izquierda y, luego, selecciona la pestaña Arguments.
    3. En la sección Arguments Passed on Launch, agrega -FIRDebugEnabled.
  2. Revisa si hay mensajes de error en los mensajes de registro.

  3. Performance Monitoring etiqueta los mensajes de registro con Firebase/Performance para que puedas filtrarlos.

  4. Verifica los siguientes tipos de registros que indican que Performance Monitoring registra los eventos de rendimiento:

    • Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
    • Logging network request trace: URL
  5. Haz clic en la URL para ver tus datos en Firebase console. Los datos pueden tardar unos minutos en actualizarse en el panel.

Si tu app no registra eventos de rendimiento, revisa las sugerencias para solucionar problemas.

Paso 4: Agrega supervisión personalizada para código específico (opcional)

Para supervisar los datos de rendimiento asociados con una parte específica del código de tu app, puedes instrumentar seguimientos de código personalizados.

Con un seguimiento de código personalizado, puedes medir cuánto tiempo tarda la app en completar una tarea o un conjunto de tareas en específico, como cargar un conjunto de imágenes o consultar la base de datos. La métrica predeterminada de un seguimiento de código personalizado es su duración, pero también puedes agregar métricas personalizadas, como aciertos de caché y advertencias de memoria.

En el código, tú defines el inicio y el final de un seguimiento de código personalizado (y agregas cualquier métrica personalizada que desees) con la API que proporciona el SDK de Performance Monitoring.

Consulta cómo agregar supervisión personalizada para código específico si necesitas más información sobre estas funciones y cómo agregarlas a tu app.

Paso 5: Implementa tu app y revisa los resultados

Una vez que hayas validado Performance Monitoring con el simulador de Xcode y uno o más dispositivos de prueba, puedes implementar la versión actualizada de la app para los usuarios.

Puedes supervisar los datos de rendimiento en el panel Performance de Firebase console.

Problemas conocidos

  • Performance Monitoring tiene problemas de compatibilidad conocidos con GTMSQLite. Recomendamos no emplear Performance Monitoring con apps que usan GTMSQLite.
  • Es posible que las referencias a métodos después de llamar a FirebaseApp.configure() interfieran en el SDK de Performance Monitoring.
  • Los problemas conocidos del Simulador de iOS entre las versiones 8.0 y 8.2 impiden que Performance Monitoring capture eventos de rendimiento. Estos problemas se corrigieron en el Simulador de iOS 8.3 y en las versiones posteriores.
  • Las conexiones establecidas con backgroundSessionConfiguration de NSURLSession tendrán tiempos de conexión más largos de lo esperado. Estas conexiones se ejecutan fuera del proceso, y los tiempos reflejan los eventos de devolución de llamada en curso.

Próximos pasos