2012-06-04 3 views
16

시작할 때 응용 프로그램이 다운 된 경우 표준 설정으로 재설정하고 싶습니다. 또한 마지막으로 추락 한 경우 실행하는 것이 바람직합니다.로드/실행 중 마지막으로 실행 된 응용 프로그램을 감지 했습니까?

편집 : Crittercism에는 crittercismDidCrashOnLastLoad 메서드가 있지만로드하는 동안 충돌하는 경우 만 처리합니다. 내가 사용한 라이브러리 버전에서는 제대로 작동하지 않았지만이 문제는 수정되었습니다.

제안 사항? 당신의 AppDelegate.m 파일에

답변

27

만들기 2 기능 :에서 다음

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. 
} 

당신의 -(BOOL)application:didFinishLaunchingWithOptions 아무것도 넣어 전에 :

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); 
+2

흠, 유용 해 보입니다. 그것은 크 리터 티즘과 심하게 상호 작용할 것인가? –

+2

좋아, 나는 이것을 시험해 보았고, 사실 크 리터 티즘을 사용하지 않을 것이다. 제품에이 기능을 추가하도록 설득하려고 노력할 것입니다. 조언 해 주셔서 감사합니다. 가장 도움이되었습니다. –

+0

'Crittercism'을 사용하지 않았지만 아마도 비슷한 방식으로 처리 할 것입니다. 이것은 또한'TestFlight'가 오류 로깅을 처리하는 방법이기도합니다. 당신은 실제로 당신에게 잡히지 않는 예외 처리기를 사용하는 방법을 그들에게 물어 볼 수 있습니다. – graver

4

을 Crashlytics 당신이 다음 스위프트 또는 ObjC에 충돌을 감지하는 CrashlyticsDelegate를 설정할 수 있습니다 사용 암호. Crashlytics 워드 프로세서

, 대리인이 completionHandler를 호출해야하지만 너무 동 기적으로, 또는 주 스레드에서 할 에 필요하지 않습니다에서

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) 
} 

. completionHandler를 NO로 을 호출하면 탐지 된 보고서가 으로 삭제되고 Crashlytics에 제출되지 않습니다. 이는 권한 프롬프트 또는 주변에 더 복잡한 논리 형식을 구현할 때 유용합니다.

beginWithAPIKey : ... 또는 [Fabric with : ...]을 사용하여 Crashlytics 을 시작하기 전에 위임자가 설정되어 있는지 확인하십시오. 실패한 경우 은 시작시 동 기적으로 발생하는 모든 대리자 콜백을 누락시킵니다.

관련 문제