Ir a la consola

Primeros pasos con Performance Monitoring para iOS

Antes de comenzar

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

Paso 1: Agrega Performance Monitoring a la app

  1. Abre el Podfile que creaste para el proyecto (o ejecuta pod init para crearlo) y, luego, agrega las siguientes líneas en la sección de destino:

    pod 'Firebase/Core'
    pod 'Firebase/Performance'
  2. En el directorio de tu Podfile, ejecuta el siguiente comando para instalar el SDK de Performance Monitoring:

    pod install
  3. Abre el archivo .xcworkspace con Xcode.

  4. Importa el módulo de Firebase en UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  5. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de tu 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.

Firebase ahora supervisa los seguimientos automáticos y las solicitudes de red HTTP/S.

Paso 2: 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.

    Por lo general, los resultados aparecen en un plazo de 12 horas.

Paso 3: (Opcional) Agrega métricas y seguimientos personalizados

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 la 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 en el que quieres iniciar un seguimiento en la app, agrega la siguiente línea 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 tu app (como reintentos o aciertos de caché), agrega una línea de código similar a la siguiente cada vez que se produzca uno. Usa una string que no sea retry para nombrar al evento, en caso de que estés contando eventos de otro tipo.

    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];
    

Paso 4: (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 personalizadas 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.

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 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