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/Analytics'
    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 (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: Agrega métricas y seguimientos personalizados (opcional)

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.

Ten en cuenta que los nombres de las métricas y de los seguimientos personalizados deben cumplir con los siguientes requisitos: no tener espacios en blanco al inicio ni al final, no comenzar con guion bajo (_) y no exceder los 32 caracteres.

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

    Swift

    import FirebasePerformance
    

    Objective-C

    @import FirebasePerformance;
    
  2. Para iniciar o detener un seguimiento personalizado, une el código que quieres seguir con las líneas de código que son similares a la siguiente:

    Swift

    let trace = Performance.startTrace(name: "customTraceName")
    
    // code that you want to trace
    
    trace.stop()
    

    Objective-C

    FIRTrace *trace = [FIRPerformance startTraceWithName:@"customTraceName"];
    
    // code that you want to trace
    
    [trace stop];
    
  3. Para agregar una métrica personalizada, agrega una línea de código similar a la siguiente cada vez que ocurra el evento. Por ejemplo, esta métrica personalizada cuenta los eventos relacionados con el rendimiento que ocurren en tu app, como los aciertos de caché o los reintentos.

    Swift

    let trace = Performance.startTrace(name: "customTraceName")
    
    trace.incrementMetric(named:"eventName", by: 1)
    // code that you want to trace (and log custom metrics)
    
    trace.stop()
    

    Objective-C

    FIRTrace *trace = [FIRPerformance startTraceWithName:@"customTraceName"];
    
    [trace incrementMetric:@"eventName" by:1];
    // code that you want to trace (and log custom metrics)
    
    [trace stop];
    

Paso 4: Agrega supervisión para solicitudes de red específicas (opcional)

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