2012-04-03 14 views
5

Según el requisito del cliente, quiero enviar un informe de bloqueo cuando la aplicación se cuelgue. Cómo es posible enviar un informe de fallos sin bloquear la aplicación. ¿Existe algún enlace o documento para esto?¿Cómo envío el informe de fallos al servicio web cuando la aplicación se cuelga?

Por favor sugiérame la manera de hacer esto. De lo contrario, escríbeme el código para esto.

Gracias.

+0

¿Cómo se obtiene informe de bloqueo sin el choque !!! ; D – Maulik

Respuesta

2

Puede enviar su informe de fallos cuando el usuario inicie la aplicación después del bloqueo.

Descargue el crashManagetLib para leer el informe de fallos.

Puede escribir el código de lectura accidente en didFinishLaunchingWithOptions como: -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self checkCrash]; 
} 

// To check Crash and attach the crash file to Email 
- (void) checkChrash 
{ 
    //code for the application crash report. 
    NSFileManager *file = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *dir = [paths objectAtIndex:0]; 
    NSString *errorReportPath = [[dir stringByAppendingPathComponent:@"crash_report.plcrash"] retain]; 

    //Call Crash Manager if apps is crashed 
    [[CrashManager sharedInstance] manageCrashes]; 
    [[CrashManager sharedInstance] setCrashDelegate:self selector:@selector(notifyException:stackTrace:)]; 

    //Mail Dialog is display if apps is crashed 
    NSString* errorReport = [CrashManager sharedInstance].errorReport; 

    if ([file fileExistsAtPath:errorReportPath]) 
    { 
     if(nil != errorReport) 
     {   
      // log out from facebook. 
      [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"TOKEN"]; 

      NSString *crashResponce = [BKAPIClient sendCrashReportByMethod:aCrashReport WithErrorLog:errorReport]; 
      NSLog(@"%@",crashResponce); 
      if ([crashResponce isEqualToString:@"True"]) 
      { 
       NSLog(@"Crash Report has been sent !"); 
      } 

      [file removeItemAtPath:errorReportPath error:nil];   
     } 
    } 

    [errorReportPath release]; 
} 

// For stack trace of crash 
- (void) notifyException:(NSException*) exception stackTrace:(NSArray*)stackTrace 
{ 
    // Oh no! We crashed! 
    // Time to output some stuff to the console. 

    // Note: Any EXC_BAD_ACCESS crashes (such as accessing a deallocated object) will 
    // cause the app to close stdout, so you won't see this trace in such a case. 

    NSLog(@"Exception:\n%@\n", exception); 

    NSLog(@"Full Trace:\n%@\n", [[StackTracer sharedInstance] printableTrace:stackTrace]); 

    NSArray* intelligentTrace = [[StackTracer sharedInstance] intelligentTrace:stackTrace]; 
    NSLog(@"Condensed Intelligent Trace:\n%@", [[StackTracer sharedInstance] condensedPrintableTrace:intelligentTrace]); 
} 
+0

Gracias por dar ese fragmento. He hecho según su código dado. Ahora estoy enfrentando el uso BKAPIC del error no declarado. ¿Qué es BKAPIClient? cómo resolver esto? @Maulik –

+0

@AsokanR: Hola, es solo una clase que llama al servicio web en mi caso. Solo necesita escribir el código para llamar a su servicio web específico. Eso es ! – Maulik

Cuestiones relacionadas