zworld-em/Plugins/sentry-unreal/Source/ThirdParty/Mac/include/Sentry/SentryOptions.h
2025-05-11 22:07:21 +08:00

759 lines
31 KiB
Objective-C

#if __has_include(<Sentry/Sentry.h>)
# import <Sentry/SentryDefines.h>
# import <Sentry/SentryProfilingConditionals.h>
#else
# import <SentryWithoutUIKit/SentryDefines.h>
# import <SentryWithoutUIKit/SentryProfilingConditionals.h>
#endif
NS_ASSUME_NONNULL_BEGIN
@class SentryDsn, SentryMeasurementValue, SentryHttpStatusCodeRange, SentryScope,
SentryReplayOptions;
@class SentryExperimentalOptions;
NS_SWIFT_NAME(Options)
@interface SentryOptions : NSObject
/**
* The DSN tells the SDK where to send the events to. If this value is not provided, the SDK will
* not send any events.
*/
@property (nullable, nonatomic, strong) NSString *dsn;
/**
* The parsed internal DSN.
*/
@property (nullable, nonatomic, strong) SentryDsn *parsedDsn;
/**
* Turns debug mode on or off. If debug is enabled SDK will attempt to print out useful debugging
* information if something goes wrong.
* @note Default is @c NO.
*/
@property (nonatomic, assign) BOOL debug;
/**
* Minimum LogLevel to be used if debug is enabled.
* @note Default is @c kSentryLevelDebug.
*/
@property (nonatomic, assign) SentryLevel diagnosticLevel;
/**
* This property will be filled before the event is sent.
*/
@property (nullable, nonatomic, copy) NSString *releaseName;
/**
* The distribution of the application.
* @discussion Distributions are used to disambiguate build or deployment variants of the same
* release of an application. For example, the @c dist can be the build number of an Xcode build.
*
*/
@property (nullable, nonatomic, copy) NSString *dist;
/**
* The environment used for events if no environment is set on the current scope.
* @note Default value is @c @"production".
*/
@property (nonatomic, copy) NSString *environment;
/**
* Specifies wether this SDK should send events to Sentry. If set to @c NO events will be
* dropped in the client and not sent to Sentry. Default is @c YES.
*/
@property (nonatomic, assign) BOOL enabled;
/**
* Controls the flush duration when calling @c SentrySDK/close .
*/
@property (nonatomic, assign) NSTimeInterval shutdownTimeInterval;
/**
* When enabled, the SDK sends crashes to Sentry.
* @note Disabling this feature disables the @c SentryWatchdogTerminationTrackingIntegration ,
* because
* @c SentryWatchdogTerminationTrackingIntegration would falsely report every crash as watchdog
* termination.
* @note Default value is @c YES .
* @note Crash reporting is automatically disabled if a debugger is attached.
*/
@property (nonatomic, assign) BOOL enableCrashHandler;
#if TARGET_OS_OSX
/**
* When enabled, the SDK captures uncaught NSExceptions. As this feature uses swizzling, disabling
* @c enableSwizzling also disables this feature.
*
* @discussion This option registers the `NSApplicationCrashOnExceptions` UserDefault,
* so your macOS application crashes when an uncaught exception occurs. As the Cocoa Frameworks are
* generally not exception-safe on macOS, we recommend this approach because the application could
* otherwise end up in a corrupted state.
*
* @warning Don't use this in combination with `SentryCrashExceptionApplication`. Either enable this
* feature or use the `SentryCrashExceptionApplication`. Having both enabled can lead to duplicated
* reports.
*
* @note Default value is @c NO .
*/
@property (nonatomic, assign) BOOL enableUncaughtNSExceptionReporting;
#endif // TARGET_OS_OSX
#if !TARGET_OS_WATCH
/**
* When enabled, the SDK reports SIGTERM signals to Sentry.
*
* It's crucial for developers to understand that the OS sends a SIGTERM to their app as a prelude
* to a graceful shutdown, before resorting to a SIGKILL. This SIGKILL, which your app can't catch
* or ignore, is a direct order to terminate your app's process immediately. Developers should be
* aware that their app can receive a SIGTERM in various scenarios, such as CPU or disk overuse,
* watchdog terminations, or when the OS updates your app.
*
* @note The default value is @c NO.
*/
@property (nonatomic, assign) BOOL enableSigtermReporting;
#endif // !TARGET_OS_WATCH
/**
* How many breadcrumbs do you want to keep in memory?
* @note Default is @c 100 .
*/
@property (nonatomic, assign) NSUInteger maxBreadcrumbs;
/**
* When enabled, the SDK adds breadcrumbs for each network request. As this feature uses swizzling,
* disabling @c enableSwizzling also disables this feature.
* @discussion If you want to enable or disable network tracking for performance monitoring, please
* use @c enableNetworkTracking instead.
* @note Default value is @c YES .
*/
@property (nonatomic, assign) BOOL enableNetworkBreadcrumbs;
/**
* The maximum number of envelopes to keep in cache.
* @note Default is @c 30 .
*/
@property (nonatomic, assign) NSUInteger maxCacheItems;
/**
* This block can be used to modify the event before it will be serialized and sent.
*/
@property (nullable, nonatomic, copy) SentryBeforeSendEventCallback beforeSend NS_SWIFT_SENDABLE;
/**
* Use this callback to drop or modify a span before the SDK sends it to Sentry. Return @c nil to
* drop the span.
*/
@property (nullable, nonatomic, copy) SentryBeforeSendSpanCallback beforeSendSpan NS_SWIFT_SENDABLE;
/**
* This block can be used to modify the event before it will be serialized and sent.
*/
@property (nullable, nonatomic, copy)
SentryBeforeBreadcrumbCallback beforeBreadcrumb NS_SWIFT_SENDABLE;
/**
* You can use this callback to decide if the SDK should capture a screenshot or not. Return @c true
* if the SDK should capture a screenshot, return @c false if not. This callback doesn't work for
* crashes.
*/
@property (nullable, nonatomic, copy)
SentryBeforeCaptureScreenshotCallback beforeCaptureScreenshot NS_SWIFT_SENDABLE;
/**
* You can use this callback to decide if the SDK should capture a view hierarchy or not. Return @c
* true if the SDK should capture a view hierarchy, return @c false if not. This callback doesn't
* work for crashes.
*/
@property (nullable, nonatomic, copy)
SentryBeforeCaptureScreenshotCallback beforeCaptureViewHierarchy NS_SWIFT_SENDABLE;
/**
* A block called shortly after the initialization of the SDK when the last program execution
* terminated with a crash.
* @discussion This callback is only executed once during the entire run of the program to avoid
* multiple callbacks if there are multiple crash events to send. This can happen when the program
* terminates with a crash before the SDK can send the crash event. You can look into @c beforeSend
* if you prefer a callback for every event.
* @warning It is not guaranteed that this is called on the main thread.
* @note Crash reporting is automatically disabled if a debugger is attached.
*/
@property (nullable, nonatomic, copy)
SentryOnCrashedLastRunCallback onCrashedLastRun NS_SWIFT_SENDABLE;
/**
* Array of integrations to install.
*/
@property (nullable, nonatomic, copy) NSArray<NSString *> *integrations;
/**
* Array of default integrations. Will be used if @c integrations is @c nil .
*/
+ (NSArray<NSString *> *)defaultIntegrations;
/**
* Indicates the percentage of events being sent to Sentry.
* @discussion Specifying @c 0 discards all events, @c 1.0 or @c nil sends all events, @c 0.01
* collects 1% of all events.
* @note The value needs to be >= @c 0.0 and \<= @c 1.0. When setting a value out of range the SDK
* sets it to the default of @c 1.0.
* @note The default is @c 1 .
*/
@property (nullable, nonatomic, copy) NSNumber *sampleRate;
/**
* Whether to enable automatic session tracking or not.
* @note Default is @c YES.
*/
@property (nonatomic, assign) BOOL enableAutoSessionTracking;
/**
* Whether to attach the top level `operationName` node of HTTP json requests to HTTP breadcrumbs
* @note Default is @c NO.
*/
@property (nonatomic, assign) BOOL enableGraphQLOperationTracking;
/**
* Whether to enable Watchdog Termination tracking or not.
* @note This feature requires the @c SentryCrashIntegration being enabled, otherwise it would
* falsely report every crash as watchdog termination.
* @note Default is @c YES.
*/
@property (nonatomic, assign) BOOL enableWatchdogTerminationTracking;
/**
* The interval to end a session after the App goes to the background.
* @note The default is 30 seconds.
*/
@property (nonatomic, assign) NSUInteger sessionTrackingIntervalMillis;
/**
* When enabled, stack traces are automatically attached to all messages logged. Stack traces are
* always attached to exceptions but when this is set stack traces are also sent with messages.
* Stack traces are only attached for the current thread.
* @note This feature is enabled by default.
*/
@property (nonatomic, assign) BOOL attachStacktrace;
/**
* The maximum size for each attachment in bytes.
* @note Default is 20 MiB (20 ✕ 1024 ✕ 1024 bytes).
* @note Please also check the maximum attachment size of relay to make sure your attachments don't
* get discarded there:
* https://docs.sentry.io/product/relay/options/
*/
@property (nonatomic, assign) NSUInteger maxAttachmentSize;
/**
* When enabled, the SDK sends personal identifiable along with events.
* @note The default is @c NO .
* @discussion When the user of an event doesn't contain an IP address, and this flag is
* @c YES, the SDK sets it to @c {{auto}} to instruct the server to use the
* connection IP address as the user address. Due to backward compatibility concerns, Sentry set the
* IP address to @c {{auto}} out of the box for Cocoa. If you want to stop Sentry from
* using the connections IP address, you have to enable Prevent Storing of IP Addresses in your
* project settings in Sentry.
*/
@property (nonatomic, assign) BOOL sendDefaultPii;
/**
* When enabled, the SDK tracks performance for UIViewController subclasses and HTTP requests
* automatically. It also measures the app start and slow and frozen frames.
* @note The default is @c YES .
* @note Performance Monitoring must be enabled for this flag to take effect. See:
* https://docs.sentry.io/platforms/apple/performance/
*/
@property (nonatomic, assign) BOOL enableAutoPerformanceTracing;
/**
* We're working to update our Performance product offering in order to be able to provide better
* insights and highlight specific actions you can take to improve your mobile app's overall
* performance. The performanceV2 option changes the following behavior: The app start duration will
* now finish when the first frame is drawn instead of when the OS posts the
* UIWindowDidBecomeVisibleNotification. This change will be the default in the next major version.
*/
@property (nonatomic, assign) BOOL enablePerformanceV2;
/**
* @warning This is an experimental feature and may still have bugs.
*
* When enabled, the SDK finishes the ongoing transaction bound to the scope and links them to the
* crash event when your app crashes. The SDK skips adding profiles to increase the chance of
* keeping the transaction.
*
* @note The default is @c NO .
*/
@property (nonatomic, assign) BOOL enablePersistingTracesWhenCrashing;
/**
* A block that configures the initial scope when starting the SDK.
* @discussion The block receives a suggested default scope. You can either
* configure and return this, or create your own scope instead.
* @note The default simply returns the passed in scope.
*/
@property (nonatomic) SentryScope * (^initialScope)(SentryScope *);
#if SENTRY_UIKIT_AVAILABLE
/**
* When enabled, the SDK tracks performance for UIViewController subclasses.
* @warning This feature is not available in @c DebugWithoutUIKit and @c ReleaseWithoutUIKit
* configurations even when targeting iOS or tvOS platforms.
* @note The default is @c YES .
*/
@property (nonatomic, assign) BOOL enableUIViewControllerTracing;
/**
* Automatically attaches a screenshot when capturing an error or exception.
* @warning This feature is not available in @c DebugWithoutUIKit and @c ReleaseWithoutUIKit
* configurations even when targeting iOS or tvOS platforms.
* @note Default value is @c NO .
*/
@property (nonatomic, assign) BOOL attachScreenshot;
/**
* @warning This is an experimental feature and may still have bugs.
* @brief Automatically attaches a textual representation of the view hierarchy when capturing an
* error event.
* @warning This feature is not available in @c DebugWithoutUIKit and @c ReleaseWithoutUIKit
* configurations even when targeting iOS or tvOS platforms.
* @note Default value is @c NO .
*/
@property (nonatomic, assign) BOOL attachViewHierarchy;
/**
* @brief If enabled, view hierarchy attachment will contain view `accessibilityIdentifier`.
* Set it to @c NO if your project uses `accessibilityIdentifier` for PII.
* @warning This feature is not available in @c DebugWithoutUIKit and @c ReleaseWithoutUIKit
* configurations even when targeting iOS or tvOS platforms.
* @note Default value is @c YES.
*/
@property (nonatomic, assign) BOOL reportAccessibilityIdentifier;
/**
* When enabled, the SDK creates transactions for UI events like buttons clicks, switch toggles,
* and other ui elements that uses UIControl @c sendAction:to:forEvent:
* @warning This feature is not available in @c DebugWithoutUIKit and @c ReleaseWithoutUIKit
* configurations even when targeting iOS or tvOS platforms.
* @note Default value is @c YES .
*/
@property (nonatomic, assign) BOOL enableUserInteractionTracing;
/**
* How long an idle transaction waits for new children after all its child spans finished. Only UI
* event transactions are idle transactions.
* @warning This feature is not available in @c DebugWithoutUIKit and @c ReleaseWithoutUIKit
* configurations even when targeting iOS or tvOS platforms.
* @note The default is 3 seconds.
*/
@property (nonatomic, assign) NSTimeInterval idleTimeout;
/**
* Report pre-warmed app starts by dropping the first app start spans if pre-warming paused
* during these steps. This approach will shorten the app start duration, but it represents the
* duration a user has to wait after clicking the app icon until the app is responsive.
*
* @note You can filter for different app start types in Discover with
* @c app_start_type:cold.prewarmed ,
* @c app_start_type:warm.prewarmed , @c app_start_type:cold , and @c app_start_type:warm .
* @warning This feature is not available in @c DebugWithoutUIKit and @c ReleaseWithoutUIKit
* configurations even when targeting iOS or tvOS platforms.
* @note Default value is @c NO .
*/
@property (nonatomic, assign) BOOL enablePreWarmedAppStartTracing;
#endif // SENTRY_UIKIT_AVAILABLE
/**
* When enabled, the SDK tracks performance for HTTP requests if auto performance tracking and
* @c enableSwizzling are enabled.
* @note The default is @c YES .
* @discussion If you want to enable or disable network breadcrumbs, please use
* @c enableNetworkBreadcrumbs instead.
*/
@property (nonatomic, assign) BOOL enableNetworkTracking;
/**
* When enabled, the SDK tracks performance for file IO reads and writes with NSData if auto
* performance tracking and enableSwizzling are enabled.
* @note The default is @c YES .
*/
@property (nonatomic, assign) BOOL enableFileIOTracing;
/**
* Indicates whether tracing should be enabled.
* @discussion Enabling this sets @c tracesSampleRate to @c 1 if both @c tracesSampleRate and
* @c tracesSampler are @c nil. Changing either @c tracesSampleRate or @c tracesSampler to a value
* other then @c nil will enable this in case this was never changed before.
*/
@property (nonatomic)
BOOL enableTracing DEPRECATED_MSG_ATTRIBUTE("Use tracesSampleRate or tracesSampler instead");
/**
* Indicates the percentage of the tracing data that is collected.
* @discussion Specifying @c 0 or @c nil discards all trace data, @c 1.0 collects all trace data,
* @c 0.01 collects 1% of all trace data.
* @note The value needs to be >= 0.0 and \<= 1.0. When setting a value out of range the SDK sets it
* to the default.
* @note The default is @c 0 .
*/
@property (nullable, nonatomic, strong) NSNumber *tracesSampleRate;
/**
* A callback to a user defined traces sampler function.
* @discussion Specifying @c 0 or @c nil discards all trace data, @c 1.0 collects all trace data,
* @c 0.01 collects 1% of all trace data.
* @note The value needs to be >= 0.0 and \<= 1.0. When setting a value out of range the SDK sets it
* to the default of @c 0 .
* @note If @c enableAppLaunchProfiling is @c YES , this function will be called during SDK start
* with @c SentrySamplingContext.forNextAppLaunch set to @c YES, and the result will be persisted to
* disk for use on the next app launch.
*/
@property (nullable, nonatomic) SentryTracesSamplerCallback tracesSampler NS_SWIFT_SENDABLE;
/**
* If tracing is enabled or not.
* @discussion @c YES if @c tracesSampleRateis > @c 0 and \<= @c 1
* or a @c tracesSampler is set, otherwise @c NO.
*/
@property (nonatomic, assign, readonly) BOOL isTracingEnabled;
/**
* A list of string prefixes of framework names that belong to the app.
* @note This option takes precedence over @c inAppExcludes.
* @note By default, this contains @c CFBundleExecutable to mark it as "in-app".
*/
@property (nonatomic, readonly, copy) NSArray<NSString *> *inAppIncludes;
/**
* Adds an item to the list of @c inAppIncludes.
* @param inAppInclude The prefix of the framework name.
*/
- (void)addInAppInclude:(NSString *)inAppInclude;
/**
* A list of string prefixes of framework names that do not belong to the app, but rather to
* third-party frameworks.
* @note By default, frameworks considered not part of the app will be hidden from stack
* traces.
* @note This option can be overridden using @c inAppIncludes.
*/
@property (nonatomic, readonly, copy) NSArray<NSString *> *inAppExcludes;
/**
* Adds an item to the list of @c inAppExcludes.
* @param inAppExclude The prefix of the frameworks name.
*/
- (void)addInAppExclude:(NSString *)inAppExclude;
/**
* Set as delegate on the @c NSURLSession used for all network data-transfer tasks performed by
* Sentry.
*
* @discussion The SDK ignores this option when using @c urlSession.
*/
@property (nullable, nonatomic, weak) id<NSURLSessionDelegate> urlSessionDelegate;
/**
* Use this property, so the transport uses this @c NSURLSession with your configuration for
* sending requests to Sentry.
*
* If not set, the SDK will create a new @c NSURLSession with @c [NSURLSessionConfiguration
* ephemeralSessionConfiguration].
*
* @note Default is @c nil.
*/
@property (nullable, nonatomic, strong) NSURLSession *urlSession;
/**
* Wether the SDK should use swizzling or not.
* @discussion When turned off the following features are disabled: breadcrumbs for touch events and
* navigation with @c UIViewControllers, automatic instrumentation for @c UIViewControllers,
* automatic instrumentation for HTTP requests, automatic instrumentation for file IO with
* @c NSData, and automatically added sentry-trace header to HTTP requests for distributed tracing.
* @note Default is @c YES.
*/
@property (nonatomic, assign) BOOL enableSwizzling;
/**
* A set of class names to ignore for swizzling.
*
* @discussion The SDK checks if a class name of a class to swizzle contains a class name of this
* array. For example, if you add MyUIViewController to this list, the SDK excludes the following
* classes from swizzling: YourApp.MyUIViewController, YourApp.MyUIViewControllerA,
* MyApp.MyUIViewController.
* We can't use an @c NSSet<Class> here because we use this as a workaround for which users have
* to pass in class names that aren't available on specific iOS versions. By using @c
* NSSet<NSString *>, users can specify unavailable class names.
*
* @note Default is an empty set.
*/
@property (nonatomic, strong) NSSet<NSString *> *swizzleClassNameExcludes;
/**
* When enabled, the SDK tracks the performance of Core Data operations. It requires enabling
* performance monitoring. The default is @c YES.
* @see <https://docs.sentry.io/platforms/apple/performance/>
*/
@property (nonatomic, assign) BOOL enableCoreDataTracing;
#if SENTRY_TARGET_PROFILING_SUPPORTED
/**
* @warning This is an experimental feature and may still have bugs.
* Set to @c YES to run the profiler as early as possible in an app launch, before you would
* normally have the opportunity to call @c SentrySDK.start . If @c profilesSampleRate is nonnull,
* the @c tracesSampleRate and @c profilesSampleRate are persisted to disk and read on the next app
* launch to decide whether to profile that launch.
* @warning If @c profilesSampleRate is @c nil then a continuous profile will be started on every
* launch; if you desire sampling profiled launches, you must compute your own sample rate to decide
* whether to set this property to @c YES or @c NO .
* @note Profiling is automatically disabled if a thread sanitizer is attached.
*/
@property (nonatomic, assign) BOOL enableAppLaunchProfiling;
/**
* @note Profiling is not supported on watchOS or tvOS.
* Indicates the percentage profiles being sampled out of the sampled transactions.
* @note The value needs to be >= @c 0.0 and \<= @c 1.0. When setting a value out of range
* the SDK sets it to @c 0. When set to a valid nonnull value, this property is dependent on
* @c tracesSampleRate -- if @c tracesSampleRate is @c 0 (default), no profiles will be collected no
* matter what this property is set to. This property is used to undersample profiles *relative to*
* @c tracesSampleRate .
* @note Setting this value to @c nil enables an experimental new profiling mode, called continuous
* profiling. This allows you to start and stop a profiler any time with @c SentrySDK.startProfiler
* and @c SentrySDK.stopProfiler, which can run with no time limit, periodically uploading profiling
* data. You can also set @c SentryOptions.enableAppLaunchProfiling to have the profiler start on
* app launch; there is no automatic stop, you must stop it manually at some later time if you
* choose to do so. Sampling rates do not apply to continuous profiles, including those
* automatically started for app launches. If you wish to sample them, you must do so at the
* callsites where you use the API or configure launch profiling. Continuous profiling is not
* automatically started for performance transactions as was the previous version of profiling.
* @seealso https://docs.sentry.io/platforms/apple/profiling/ for more information about the
* different profiling modes.
* @note The default is @c nil (which implies continuous profiling mode).
* @warning The new continuous profiling mode is experimental and may still contain bugs.
* @note Profiling is automatically disabled if a thread sanitizer is attached.
*/
@property (nullable, nonatomic, strong) NSNumber *profilesSampleRate;
/**
* @note Profiling is not supported on watchOS or tvOS.
* A callback to a user defined profiles sampler function. This is similar to setting
* @c profilesSampleRate but instead of a static value, the callback function will be called to
* determine the sample rate.
* @note If @c enableAppLaunchProfiling is @c YES , this function will be called during SDK start
* with @c SentrySamplingContext.forNextAppLaunch set to @c YES, and the result will be persisted to
* disk for use on the next app launch.
* @note Profiling is automatically disabled if a thread sanitizer is attached.
*/
@property (nullable, nonatomic) SentryTracesSamplerCallback profilesSampler NS_SWIFT_SENDABLE;
/**
* If profiling should be enabled or not.
* @note Profiling is not supported on watchOS or tvOS.
* @note This only returns whether or not trace-based profiling is enabled. If it is not, then
* continuous profiling is effectively enabled, and calling SentrySDK.startProfiler will
* successfully start a continuous profile.
* @returns @c YES if either @c profilesSampleRate > @c 0 and \<= @c 1 , or @c profilesSampler is
* set, otherwise @c NO.
* @note Profiling is automatically disabled if a thread sanitizer is attached.
*/
@property (nonatomic, assign, readonly) BOOL isProfilingEnabled;
/**
* @brief Whether to enable the sampling profiler.
* @note Profiling is not supported on watchOS or tvOS.
* @deprecated Use @c profilesSampleRate instead. Setting @c enableProfiling to @c YES is the
* equivalent of setting @c profilesSampleRate to @c 1.0 If @c profilesSampleRate is set, it will
* take precedence over this setting.
* @note Default is @c NO.
* @note Profiling is automatically disabled if a thread sanitizer is attached.
*/
@property (nonatomic, assign) BOOL enableProfiling DEPRECATED_MSG_ATTRIBUTE(
"Use profilesSampleRate or profilesSampler instead. This property will be removed in a future "
"version of the SDK");
#endif // SENTRY_TARGET_PROFILING_SUPPORTED
/**
* Whether to send client reports, which contain statistics about discarded events.
* @note The default is @c YES.
* @see <https://develop.sentry.dev/sdk/client-reports/>
*/
@property (nonatomic, assign) BOOL sendClientReports;
/**
* When enabled, the SDK tracks when the application stops responding for a specific amount of
* time defined by the @c appHangsTimeoutInterval option.
* @note The default is @c YES
* @note ANR tracking is automatically disabled if a debugger is attached.
*/
@property (nonatomic, assign) BOOL enableAppHangTracking;
#if SENTRY_UIKIT_AVAILABLE
/**
* AppHangTrackingV2 can differentiate between fully-blocking and non-fully blocking app hangs.
* fully-blocking app hang is when the main thread is stuck completely, and the app can't render a
* single frame. A non-fully-blocking app hang is when the app appears stuck to the user but can
still
* render a few frames. Fully-blocking app hangs are more actionable because the stacktrace shows
the
* exact blocking location on the main thread. As the main thread isn't completely blocked,
* non-fully-blocking app hangs can have a stacktrace that doesn't highlight the exact blocking
* location.
*
* You can use @c enableReportNonFullyBlockingAppHangs to ignore non-fully-blocking app hangs.
*
* @note This flag wins over enableAppHangTracking. When enabling both enableAppHangTracking and
enableAppHangTrackingV2, the SDK only enables enableAppHangTrackingV2 and disables
enableAppHangTracking.
*
* @warning This is an experimental feature and may still have bugs.
*/
@property (nonatomic, assign) BOOL enableAppHangTrackingV2;
/**
* When enabled the SDK reports non-fully-blocking app hangs. A non-fully-blocking app hang is when
* the app appears stuck to the user but can still render a few frames. For more information see @c
* enableAppHangTrackingV2.
*
* @note The default is @c YES. This feature only works when @c enableAppHangTrackingV2 is enabled.
*/
@property (nonatomic, assign) BOOL enableReportNonFullyBlockingAppHangs;
#endif // SENTRY_UIKIT_AVAILABLE
/**
* The minimum amount of time an app should be unresponsive to be classified as an App Hanging.
* @note The actual amount may be a little longer.
* @note Avoid using values lower than 100ms, which may cause a lot of app hangs events being
* transmitted.
* @note The default value is 2 seconds.
*/
@property (nonatomic, assign) NSTimeInterval appHangTimeoutInterval;
/**
* When enabled, the SDK adds breadcrumbs for various system events.
* @note Default value is @c YES.
*/
@property (nonatomic, assign) BOOL enableAutoBreadcrumbTracking;
/**
* An array of hosts or regexes that determines if outgoing HTTP requests will get
* extra @c trace_id and @c baggage headers added.
* @discussion This array can contain instances of @c NSString which should match the URL (using
* @c contains ), and instances of @c NSRegularExpression, which will be used to check the whole
* URL.
* @note The default value adds the header to all outgoing requests.
* @see https://docs.sentry.io/platforms/apple/configuration/options/#trace-propagation-targets
*/
@property (nonatomic, retain) NSArray *tracePropagationTargets;
/**
* When enabled, the SDK captures HTTP Client errors.
* @note This feature requires @c enableSwizzling enabled as well.
* @note Default value is @c YES.
*/
@property (nonatomic, assign) BOOL enableCaptureFailedRequests;
/**
* The SDK will only capture HTTP Client errors if the HTTP Response status code is within the
* defined range.
* @note Defaults to 500 - 599.
*/
@property (nonatomic, strong) NSArray<SentryHttpStatusCodeRange *> *failedRequestStatusCodes;
/**
* An array of hosts or regexes that determines if HTTP Client errors will be automatically
* captured.
* @discussion This array can contain instances of @c NSString which should match the URL (using
* @c contains ), and instances of @c NSRegularExpression, which will be used to check the whole
* URL.
* @note The default value automatically captures HTTP Client errors of all outgoing requests.
*/
@property (nonatomic, strong) NSArray *failedRequestTargets;
#if SENTRY_HAS_METRIC_KIT
/**
* Use this feature to enable the Sentry MetricKit integration.
*
* @brief When enabled, the SDK sends @c MXDiskWriteExceptionDiagnostic, @c MXCPUExceptionDiagnostic
* and
* @c MXHangDiagnostic to Sentry. The SDK supports this feature from iOS 15 and later and macOS 12
* and later because, on these versions, @c MetricKit delivers diagnostic reports immediately, which
* allows the Sentry SDK to apply the current data from the scope.
* @note This feature is disabled by default.
*/
@property (nonatomic, assign) BOOL enableMetricKit API_AVAILABLE(
ios(15.0), macos(12.0), macCatalyst(15.0)) API_UNAVAILABLE(tvos, watchos);
/**
* When enabled, the SDK adds the raw MXDiagnosticPayloads as an attachment to the converted
* SentryEvent. You need to enable @c enableMetricKit for this flag to work.
*
* @note Default value is @c NO.
*/
@property (nonatomic, assign) BOOL enableMetricKitRawPayload API_AVAILABLE(
ios(15.0), macos(12.0), macCatalyst(15.0)) API_UNAVAILABLE(tvos, watchos);
#endif // SENTRY_HAS_METRIC_KIT
/**
* @warning This is an experimental feature and may still have bugs.
* @brief By enabling this, every UIViewController tracing transaction will wait
* for a call to @c SentrySDK.reportFullyDisplayed().
* @discussion Use this in conjunction with @c enableUIViewControllerTracing.
* If @c SentrySDK.reportFullyDisplayed() is not called, the transaction will finish
* automatically after 30 seconds and the `Time to full display` Span will be
* finished with @c DeadlineExceeded status.
* @note Default value is `NO`.
*/
@property (nonatomic) BOOL enableTimeToFullDisplayTracing;
/**
* This feature is only available from Xcode 13 and from macOS 12.0, iOS 15.0, tvOS 15.0,
* watchOS 8.0.
*
* @warning This is an experimental feature and may still have bugs.
* @brief Stitches the call to Swift Async functions in one consecutive stack trace.
* @note Default value is @c NO .
*/
@property (nonatomic, assign) BOOL swiftAsyncStacktraces;
/**
* The path to store SDK data, like events, transactions, profiles, raw crash data, etc. We
recommend only changing this when the default, e.g., in security environments, can't be accessed.
*
* @note The default is `NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask,
YES)`.
*/
@property (nonatomic, copy) NSString *cacheDirectoryPath;
/**
* Whether to enable Spotlight for local development. For more information see
* https://spotlightjs.com/.
*
* @note Only set this option to @c YES while developing, not in production!
*/
@property (nonatomic, assign) BOOL enableSpotlight;
/**
* The Spotlight URL. Defaults to http://localhost:8969/stream. For more information see
* https://spotlightjs.com/
*/
@property (nonatomic, copy) NSString *spotlightUrl;
/**
* This aggregates options for experimental features.
* Be aware that the options available for experimental can change at any time.
*/
@property (nonatomic, readonly) SentryExperimentalOptions *experimental;
@end
NS_ASSUME_NONNULL_END