mirror of
https://github.com/ecency/ecency-mobile.git
synced 2024-12-23 05:13:04 +03:00
150 lines
4.4 KiB
Objective-C
150 lines
4.4 KiB
Objective-C
#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
|