Fallas y excepciones: SDK de iOS

En este documento, se proporciona una descripción general de alto nivel de la medición de fallas y excepciones con el SDK de Google Analytics para iOS v2.

Descripción general

La medición de fallas y excepciones te permite medir la cantidad y el tipo de fallas y excepciones que ocurren en tu app. Las excepciones en Google Analytics incluyen lo siguiente:

  • NSString Descripción: Una descripción de la excepción (hasta 100 caracteres) (opcional) Acepta nil.
  • boolean isFatal: Indica si la excepción fue irrecuperable. YES indica irrecuperable.

Los datos de fallas y excepciones están disponibles, principalmente, en el informe de fallas y excepciones.

Excepciones detectadas

Las excepciones detectadas son errores de tu app para los que definiste código de control de excepciones. Por lo general, son errores que esperas que ocurran durante el uso normal de tu app y de los cuales te gustaría que esta pueda recuperarse, como el tiempo de espera ocasional de una conexión de red durante una solicitud de datos.

Para medir las excepciones capturadas, agrega sendException: al bloque catch de tu código de control de excepciones.

En el siguiente ejemplo, una app intenta cargar una lista de puntuaciones altas desde la nube. Si se agota el tiempo de espera de la solicitud, quizás debido a una conexión de red lenta, enviaremos la excepción a Google Analytics antes de procesarla para el usuario:

@try {
  NSArray *highScores = [self getHighScores];
}
@catch (NSException *exception) {
    [tracker sendException:NO // Boolean indicates non-fatal exception.
            withDescription:@"Connection timout %d: %@", connectionError, errorDescription];
}

Puedes propagar automáticamente el campo de descripción de una excepción con el nombre y el motivo mediante sendException:withDescription:withNSException:, como en este ejemplo:

@try {
  NSArray *highScores = [self getHighScores];
}
@catch (NSException *exception) {
  [tracker sendException:NO withNSException:exception);
}

Para propagar automáticamente un error con el dominio, el código y la descripción del error, usa sendException:withDescription:withNSError: como se muestra a continuación:

NSError *error = nil;
if (![self updateHighScoresWithError:&error]) {
  [tracker sendException:NO withNSError:error);
}

Medición de excepciones no detectadas

Las excepciones sin detectar representan instancias en las que la app encontró condiciones inesperadas durante el tiempo de ejecución y, a menudo, son irrecuperables, lo que provoca que la app falle. Las excepciones sin detectar se pueden enviar automáticamente a Google Analytics si configuras la propiedad sendUncaughtExceptions como YES. Esto se puede hacer de forma conveniente desde el método application:didFinishLaunchingWithOptions del delegado de la app:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GAI sharedInstance].sendUncaughtExceptions = YES; // Enable 

  // ... the rest of your code, include other GAI properties you want to set.
}

Cuando utilices la medición automática de excepciones, ten en cuenta lo siguiente:

  • Todas las excepciones que se envían con la medición automática de excepciones se informan como irrecuperables en Google Analytics.
  • El campo de descripción se propaga automáticamente con el seguimiento de pila.