ecency-mobile/ios/Pods/AppCenter/AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework/Headers/MSCrashes.h
2018-11-21 23:52:26 +03:00

150 lines
4.4 KiB
Objective-C
Executable File

#import "MSErrorReport.h"
#import "MSServiceAbstract.h"
@class MSCrashesDelegate;
/**
* Custom block that handles the alert that prompts the user whether crash reports need to be processed or not.
*
* @return Returns YES to discard crash reports, otherwise NO.
*/
typedef BOOL (^MSUserConfirmationHandler)(NSArray<MSErrorReport *> *_Nonnull errorReports);
/**
* Error Logging status.
*/
typedef NS_ENUM(NSUInteger, MSErrorLogSetting) {
/**
* Crash reporting is disabled.
*/
MSErrorLogSettingDisabled = 0,
/**
* User is asked each time before sending error logs.
*/
MSErrorLogSettingAlwaysAsk = 1,
/**
* Each error log is send automatically.
*/
MSErrorLogSettingAutoSend = 2
};
/**
* Crash Manager alert user input.
*/
typedef NS_ENUM(NSUInteger, MSUserConfirmation) {
/**
* User chose not to send the crash report.
*/
MSUserConfirmationDontSend = 0,
/**
* User wants the crash report to be sent.
*/
MSUserConfirmationSend = 1,
/**
* User wants to send all error logs.
*/
MSUserConfirmationAlways = 2
};
@protocol MSCrashesDelegate;
@interface MSCrashes : MSServiceAbstract
///-----------------------------------------------------------------------------
/// @name Testing Crashes Feature
///-----------------------------------------------------------------------------
/**
* Lets the app crash for easy testing of the SDK.
*
* The best way to use this is to trigger the crash with a button action.
*
* Make sure not to let the app crash in `applicationDidFinishLaunching` or any other startup method! Since otherwise the app would crash
* before the SDK could process it.
*
* Note that our SDK provides support for handling crashes that happen early on startup. Check the documentation for more information on how
* to use this.
*
* If the SDK detects an App Store environment, it will _NOT_ cause the app to crash!
*/
+ (void)generateTestCrash;
///-----------------------------------------------------------------------------
/// @name Helpers
///-----------------------------------------------------------------------------
/**
* Check if the app has crashed in the last session.
*
* @return Returns YES is the app has crashed in the last session.
*/
+ (BOOL)hasCrashedInLastSession;
/**
* Provides details about the crash that occurred in the last app session
*/
+ (nullable MSErrorReport *)lastSessionCrashReport;
///-----------------------------------------------------------------------------
/// @name Configuration
///-----------------------------------------------------------------------------
#if !TARGET_OS_TV
/**
* Disable the Mach exception server.
*
* By default, the SDK uses the Mach exception handler to catch fatal signals, e.g. stack overflows, via a Mach exception server. If you
* want to disable the Mach exception handler, you should call this method _BEFORE_ starting the SDK. Your typical setup code would look
* like this:
*
* `[MSCrashes disableMachExceptionHandler]`;
* `[MSAppCenter start:@"YOUR_APP_ID" withServices:@[[MSCrashes class]]];`
*
* or if you are using Swift:
*
* `MSCrashes.disableMachExceptionHandler()`
* `MSAppCenter.start("YOUR_APP_ID", withServices: [MSAnalytics.self, MSCrashes.self])`
*
* tvOS does not support the Mach exception handler, thus crashes that are caused by stack overflows cannot be detected. As a result,
* disabling the Mach exception server is not available in the tvOS SDK.
*
* @discussion It can be useful to disable the Mach exception handler when you are debugging the Crashes service while developing,
* especially when you attach the debugger to your application after launch.
*/
+ (void)disableMachExceptionHandler;
#endif
/**
* Set the delegate
* Defines the class that implements the optional protocol `MSCrashesDelegate`.
*
* @see MSCrashesDelegate
*/
+ (void)setDelegate:(_Nullable id<MSCrashesDelegate>)delegate;
/**
* Set a user confirmation handler that is invoked right before processing crash reports to determine whether sending crash reports or not.
*
* @param userConfirmationHandler A handler for user confirmation.
*
* @see MSUserConfirmationHandler
*/
+ (void)setUserConfirmationHandler:(_Nullable MSUserConfirmationHandler)userConfirmationHandler;
/**
* Notify SDK with a confirmation to handle the crash report.
*
* @param userConfirmation A user confirmation.
*
* @see MSUserConfirmation.
*/
+ (void)notifyWithUserConfirmation:(MSUserConfirmation)userConfirmation;
@end