2012-04-03 4 views
5

Nach Client-Anforderung möchte ich Crash-Bericht senden, wenn App abstürzen. Wie es möglich ist, einen Absturzbericht zu senden, ohne die App zu stürzen. Gibt es einen Link oder ein Dokument dafür?Wie sende ich einen Absturzbericht an den Webdienst, wenn die Anwendung abstürzt?

Bitte schlagen Sie mir die Möglichkeit vor, dies zu tun. Sonst poste mich Code für diese.

Vielen Dank.

+0

Wie würden Sie bekommen Crash-Bericht ohne Crash !!! -:

Sie können Ihren Absturz Lesecode in didFinishLaunchingWithOptions wie schreiben ; D – Maulik

Antwort

2

Sie können Ihren Absturzbericht senden, wenn der Benutzer die Anwendung nach dem Absturz startet.

Laden Sie die crashManagetLib herunter, um einen Absturzbericht zu lesen.

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

Danke, dass du dieses Snippet gibst. Ich habe nach deinem angegebenen Code getan. Jetzt bin ich konfrontiert BKAPIClient Verwendung von nicht angemeldeten Fehler. Was ist BKAPIClient? Wie löst man das? @Maulik –

+0

@AsokanR: Hallo, es ist nur eine Klasse, die Web-Service in meinem Fall anruft. Sie müssen nur Code schreiben, um Ihren spezifischen Webservice anzurufen. Das ist es ! – Maulik

Verwandte Themen