ios xcode crittercism

ios - ¿La aplicación de detección se bloqueó durante la carga/la última vez que se ejecutó?



xcode crittercism (2)

Me gustaría que mi aplicación se restablezca a la configuración estándar si se bloquea durante el inicio. Preferiblemente también si se estrelló la última vez que se ejecutó .

EDITAR: Crittercism tiene un método crittercismDidCrashOnLastLoad , pero solo maneja el caso de fallar durante la carga. No funcionó correctamente en la versión de la biblioteca que utilicé, pero desde entonces se ha corregido.

Sugerencias?


Haga 2 funciones en su archivo AppDelegate.m :

void HandleException(NSException *exception) { NSLog(@"App crashing with exception: %@", exception); //Save somewhere that your app has crashed. } void HandleSignal(int signal) { NSLog(@"We received a signal: %d", signal); //Save somewhere that your app has crashed. }

Luego, en la aplicación -(BOOL)application:didFinishLaunchingWithOptions antes de que se ponga otra cosa:

NSSetUncaughtExceptionHandler(&HandleException); struct sigaction signalAction; memset(&signalAction, 0, sizeof(signalAction)); signalAction.sa_handler = &HandleSignal; sigaction(SIGABRT, &signalAction, NULL); sigaction(SIGILL, &signalAction, NULL); sigaction(SIGBUS, &signalAction, NULL);


Usando Crashlytics, puede configurar CrashlyticsDelegate para detectar un bloqueo en el código Swift u ObjC.

import Fabric import Crashlytics func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { Crashlytics.sharedInstance().delegate = self Fabric.with([Crashlytics.self]) return true } //MARK: - CrashlyticsDelegate func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) { completionHandler(true) }

De documentos Crashlytics

Su delegado debe invocar a completedHandler, pero no necesita hacerlo de forma síncrona, ni siquiera en el hilo principal. Si invoca el Asistente para completar con NO hará que el informe detectado se elimine y no se envíe a Crashlytics. Esto es útil para implementar solicitudes de permiso u otras formas de lógica más complejas sobre el envío de bloqueos.

Asegúrese de que el delegado esté configurado antes de iniciar Crashlytics con startWithAPIKey:… o mediante [Fabric with:…]. De lo contrario, se perderán las devoluciones de llamada de delegado que se producen de forma síncrona durante el inicio.