Ir a la consola

Primeros pasos con Firebase Performance Monitoring para iOS

Esta guía muestra cómo usar Firebase Performance Monitoring con la app. Sigue estos pasos:

  1. Requisitos previos
  2. Agrega Firebase a tu proyecto de iOS
  3. Agrega Performance Monitoring a la app
  4. (Opcional) Define un seguimiento personalizado y una o más métricas personalizadas en la app
  5. Revisa Firebase console para ver los resultados de Performance Monitoring
  6. Implementa la app y revisa los resultados en Firebase console

Requisitos previos

Antes de comenzar, debes configurar algunos elementos en el entorno:

  • Xcode 8.2.1 o una versión más reciente
  • un proyecto de Xcode orientado a iOS 8 o una versión más reciente
  • el identificador del paquete de la app
  • CocoaPods 1.0.0 o una versión más reciente

Agrega Firebase a tu proyecto de iOS

A continuación, debes agregar Firebase a la app, agregar el SDK y luego inicializar Firebase en la app. Para ver instrucciones, consulta Agrega Firebase a tu proyecto de iOS.

Agrega Performance Monitoring a la app

  1. Abre el podfile que creaste para el proyecto (o crea uno con el comando pod init) y, luego, agrega las siguientes líneas dentro de la sección de destino:
    pod 'Firebase/Core'
    pod 'Firebase/Performance'
  2. En el directorio donde ubicaste el podfile, ejecuta el siguiente comando para instalar el SDK de Performance Monitoring:
    pod install
  3. Al final del comando, abre el archivo .xcworkspace con Xcode.
  4. Importa el módulo de Firebase en tu UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  5. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de la aplicación:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Vuelve a compilar la app. Ahora se supervisarán los seguimientos automáticos y las solicitudes de red HTTP/S.

(Opcional) Define un seguimiento personalizado y una o más métricas personalizadas en la app

Un seguimiento personalizado es un informe de los datos de rendimiento asociados con parte del código de la app. Para obtener más información sobre los seguimientos personalizados, consulta la descripción general de Performance Monitoring. Puedes configurar varios seguimientos personalizados en la app y es posible ejecutar más de uno al mismo tiempo. Cada seguimiento personalizado puede tener una o más métricas para contar eventos relacionados con el rendimiento en tu app. Estas métricas están asociadas con los seguimientos que las crean.

  1. Agrega el módulo de Performance Monitoring al encabezado:

    Swift

    import FirebasePerformance

    Objective-C

    @import FirebasePerformance;

  2. Antes del código donde quieres iniciar un seguimiento en la app, agrega las siguientes líneas de código para iniciar un seguimiento llamado test trace:

    Swift

    let trace = Performance.startTrace(name: "test trace")

    Objective-C

    FIRTrace *trace = [FIRPerformance startTraceWithName:@"test trace"];

  3. Para contar los eventos relacionados con el rendimiento que ocurren en la app (como los aciertos y los reintentos de la caché), agrega una línea de código similar a la siguiente cada vez que ocurra el evento, con una string distinta de retry para nombrar ese evento si estás contando un tipo de evento diferente:

    Swift

    trace.incrementMetric(named:"retry", by: 1)

    Objective-C

    [trace incrementMetric:@"retry" by:1];

  4. Después del código donde deseas detener el seguimiento, agrega la siguiente línea:

    Swift

    trace.stop()

    Objective-C

    [trace stop];

Revisa Firebase console para ver los resultados de Performance Monitoring

  1. Ejecuta la app en el simulador de Xcode (Producto -> Ejecutar).
  2. Comprueba que los resultados de Performance Monitoring aparezcan en Firebase console. Deberían aparecer en un plazo de 12 horas.

Implementa la app y revisa los resultados en Firebase console

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 y utilizar Firebase console para supervisar los datos de rendimiento.

(Opcional) Agrega supervisión para solicitudes de red específicas

Performance Monitoring recopila las solicitudes de red automáticamente. Si bien esto incluye la mayoría de las solicitudes de red para la app, es posible que no se informen todos los casos. Para incluir solicitudes de red específicas en Performance Monitoring, agrega el siguiente código a la app:

Swift
guard let metric = HTTPMetric(url: "https://www.google.com", httpMethod: .get) else { return }

metric.start()
guard let url = URL(string: "https://www.google.com") else { return }
let request: URLRequest = URLRequest(url:url)
let session = URLSession(configuration: .default)
let dataTask = session.dataTask(with: request) { (urlData, response, error) in
        if let httpResponse = response as? HTTPURLResponse {
         metric.responseCode = httpResponse.statusCode
        }
        metric.stop()
}
dataTask.resume()
Objective-C
@property (nonatomic) FIRHTTPMetric *metric;
...
- (void)beginManualNetworkInstrumentation {
  self.metric =
      [[FIRHttpMetric alloc] initWithURL:[NSURL URLWithString:@"https://www.google.com"]
                              HTTPMethod:FIRHTTPMethodGET];

  [self.metric start];

  NSURLRequest *request =
      [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com"]];
  NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                                delegate:self];
  [connection resume];
}

- (void)connection:(NSURLConnection *)connection
    didReceiveResponse:(NSURLResponse *) response {
  NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response
  self.metric.responseCode = httpResponse.statusCode;
  [self.metric stop];
}

Las solicitudes de red HTTP/S que capturas específicamente de esta manera aparecen en Firebase console junto con las solicitudes de red que Performance Monitoring captura de forma automática.

(Opcional) Revisa una muestra de solicitudes de red y seguimientos

Puedes ver en detalle algunos segmentos de solicitudes de red o seguimientos específicos en Firebase console. En una muestra aleatoria de sesiones grabadas, se muestra la siguiente información:

una imagen de la página de sesiones de Firebase Performance Monitoring

  • CPU: El SDK de Performance Monitoring registra cuánto tiempo de usuario y de sistema consume la app.
  • Memoria: El SDK de Performance Monitoring registra cuánta memoria del heap usa la app. La memoria del heap es la que se usa para asignaciones dinámicas, incluidos los objetos que se creen, los que se liberen y los que la app use de forma activa.
  • Información individual: Información detallada sobre una sola instancia de la solicitud de red o seguimiento, incluida la hora de inicio y de finalización, la duración y el tamaño de la solicitud y de la respuesta.
  • Instancias simultáneas: Información sobre las solicitudes de red o seguimiento que ocurrieron al mismo tiempo.
  • Atributos del dispositivo: Información sobre el dispositivo, incluida la versión de la app, el modelo, la versión de SO, la radio y los atributos personalizados.

Para ver estos detalles en Firebase console, abre una de las solicitudes de red o seguimiento de la app y haz clic en Ver sesiones. También puedes hacer clic en el vínculo de las sesiones de un atributo en específico.

una imagen del seguimiento de Firebase Performance Monitoring con un vínculo a las sesiones

Los datos de las sesiones que recopila Performance Monitoring se distribuyen en percentiles para cada métrica. Las sesiones de los rangos percentiles más bajos tienen un valor menor para la métrica que las sesiones de los percentiles más altos. Si deseas filtrar las sesiones disponibles por percentil, usa la lista desplegable que se encuentra arriba de los detalles de las sesiones.

una imagen de la página de sesiones de Firebase Performance Monitoring

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