2012-04-03 3 views
5

В соответствии с требованиями клиента я хочу отправить сообщение об аварии, когда приложение попадает в аварийную ситуацию. Как можно отправить отчет о сбое без сбоев приложения. Есть ли для этого ссылка или документ.Как отправить отчет о сбое на веб-службу при сбое приложения?

Пожалуйста, предложите мне способ сделать это. В противном случае напишите мне код для этого.

спасибо.

+0

Как бы вы получите отчет о сбое без Крушения !!! ; D – Maulik

ответ

2

Вы можете отправить отчет о сбое, когда пользователь запускает приложение после сбоя.

Загрузите crashManagetLib, чтобы прочитать отчет о сбое.

Вы можете написать свой код аварии чтения в didFinishLaunchingWithOptions как: -

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

Спасибо за предоставление этого фрагмента. я сделал в соответствии с вашим кодом. Теперь я столкнулся с BKAPIClient использованием необъявленной ошибки. Что такое BKAPIClient? как это решить? @Maulik –

+0

@AsokanR: Привет, это просто класс, который вызывает веб-сервис в моем случае. Вам просто нужно написать код для вызова вашего конкретного веб-сервиса. Это оно ! – Maulik