2012-04-03 33 views
5

Theo yêu cầu của khách hàng, tôi muốn gửi báo cáo sự cố khi ứng dụng gặp sự cố. Cách có thể gửi báo cáo sự cố mà không gặp phải ứng dụng. Có bất kỳ liên kết hoặc tài liệu nào cho việc này không.Làm cách nào để gửi báo cáo sự cố tới dịch vụ web khi ứng dụng bị lỗi?

Vui lòng đề xuất cho tôi cách để thực hiện việc này. Nếu không, hãy đăng mã cho tôi.

Cảm ơn bạn.

+0

Làm thế nào bạn sẽ nhận được báo cáo tai nạn mà không có sự sụp đổ !!! ; D – Maulik

Trả lời

2

Bạn có thể gửi báo cáo sự cố khi người dùng khởi động ứng dụng sau sự cố.

Tải xuống crashManagetLib để đọc báo cáo sự cố.

Bạn có thể viết mã đọc sụp đổ của bạn trong didFinishLaunchingWithOptions như: -

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

Cảm ơn bạn đã cho đoạn mã đó. tôi đã làm theo mã của bạn. Bây giờ tôi đang đối mặt với việc sử dụng BKAPIClient lỗi không khai báo. BKAPIClient là gì. làm thế nào để giải quyết điều này? @Maulik –

+0

@AsokanR: Xin chào, đây chỉ là một lớp gọi dịch vụ web trong trường hợp của tôi. Bạn chỉ cần viết mã để gọi dịch vụ web cụ thể của bạn. Đó là nó ! – Maulik

Các vấn đề liên quan