diff --git a/SwiftProject/SwiftProject/AppDelegate.swift b/SwiftProject/SwiftProject/AppDelegate.swift index e49b928..a941f7e 100644 --- a/SwiftProject/SwiftProject/AppDelegate.swift +++ b/SwiftProject/SwiftProject/AppDelegate.swift @@ -48,6 +48,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { if data != nil { let crushStr:String? = String.init(data: data! as Data, encoding: String.Encoding.utf8) Analytics.logEvent("app_crash", parameters: ["crashInfo":crushStr ?? ""]) + CopyCrashHandler.cleanCrashInfo() } } diff --git a/SwiftProject/SwiftProject/CopyCrashHandler.swift b/SwiftProject/SwiftProject/CopyCrashHandler.swift index 22cf07a..5c2d963 100644 --- a/SwiftProject/SwiftProject/CopyCrashHandler.swift +++ b/SwiftProject/SwiftProject/CopyCrashHandler.swift @@ -6,78 +6,24 @@ // import Foundation -//public class CopyCrashHandler -//{ -// public static func setup(callBack:@escaping CrashCallback){ -// crashCallBack = callBack; -// registerSignalHanlder(); -// } -//} -// -//public typealias Completion = ()->Void; -//public typealias CrashCallback = (String,Completion)->Void; -// -//public var crashCallBack: CrashCallback? -// -// -// -// -//func signalHandler(signal:Int32) -> Void { -// let stackTrace = Thread.callStackSymbols.joined(separator: "\r\n") -// crashCallBack?(stackTrace,{ -// unregisterSignalHandler(); -// exit(signal); -// }); -//} -// -//func registerSignalHanlder() -//{ -// objc_setUncaughtExceptionHandler { (_response:Any?) in -// if let signal = _response as? Int32 { -// signalHandler(signal: signal) -// } -// else if let exception = _response as? NSException { -// crashCallBack?(exception.reason ?? exception.callStackSymbols.joined(separator: "\r\n"),{ -// unregisterSignalHandler(); -// exception.raise() -// }); -// } -// } -// -// signal(SIGINT, signalHandler); -// signal(SIGSEGV, signalHandler);//野指针,僵尸对象 -// signal(SIGTRAP, signalHandler); -// signal(SIGABRT, signalHandler); -// signal(SIGILL, signalHandler); -// signal(SIGBUS, signalHandler); -// signal(SIGFPE, signalHandler); -// signal(SIGTERM, signalHandler); -// signal(SIGKILL, signalHandler);//CPU无法执行的代码(比如无效指令、除以0等) -// signal(SIGPIPE, signalHandler); -//} -// -//func unregisterSignalHandler() -//{ -// signal(SIGINT, SIG_DFL); -// signal(SIGSEGV, SIG_DFL); -// signal(SIGTRAP, SIG_DFL); -// signal(SIGABRT, SIG_DFL); -// signal(SIGILL, SIG_DFL); -// signal(SIGBUS, SIG_DFL); -// signal(SIGFPE, SIG_DFL); -// signal(SIGTERM, SIG_DFL); -// signal(SIGKILL, SIG_DFL); -// signal(SIGPIPE, SIG_DFL); -//} -// -// public class CopyCrashHandler { public class func getdataPath() -> String{ let str = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last! let urlPath = str.appending("Exception.txt") return urlPath + } + + public class func cleanCrashInfo() { + let path = CopyCrashHandler.getdataPath() + do{ + if FileManager.default.fileExists(atPath: path) { + try FileManager.default.removeItem(atPath: path) + } + }catch{ } + } + public class func setDefaultHandler() { NSSetUncaughtExceptionHandler { (exception) in let arr:NSArray = exception.callStackSymbols as NSArray @@ -95,8 +41,7 @@ public class CopyCrashHandler { } try url.write(toFile: path, atomically: true, encoding: String.Encoding.utf8) - }catch{ error - print("\(error)") + }catch{ } } }