- 3 Minutes to read
- Print
- DarkLight
Crash Tracking
- 3 Minutes to read
- Print
- DarkLight
Crash tracking allows you to analyze crashes and exceptions in your mobile application.
Parameters
As soon as crash tracking is enabled, parameters are sent automatically to Mapp Intelligence. However, if you want to properly analyze them you'll need to configure the parameters in your account
Parameter | Description | Where to configure (Mapp Q3 > Configuration > ...) | Where to analyze |
---|---|---|---|
Crash - Type | Type of crash:
| Categories > Custom Parameters > Event Parameter | metric |
Crash - Name | Name of the crash. Name as given by the system or custom name in case custom type is used. | Categories > Custom Parameters > Event Parameter | Navigation > Event Parameter > [Name of Parameter] |
Crash - Message | Crash message. Message as given by the system or custom message in case custom type is used. | ||
Crash - Cause Message | The parsed string of the crash messages. | ||
Crash - Stack | Stack where the crash happened. | ||
Crash - Cause Stack | Stack that caused the crash. |
Methods
Enable crash tracking in global configuration:
Method | Description | Tracking Options | Default |
---|---|---|---|
.enableCrashTracking(exceptionLogLevel: exceptionType: exceptionType) | Enables crash tracking in global configuration. The following types can be tracked:
| The following configuration options are possible:
| noneOfExceptionTypes |
Example
First, enable crash tracking in your global configuration settings:
MappIntelligence.shared()?.initWithConfiguration([12345], onTrackdomain: "https://track.mapp.com") MappIntelligence.shared()?.enableCrashTracking(.allExceptionTypes)
Then, you can track the desired exception in your application screens:
@IBAction func trackExceptionWithNameAndMessage(_ sender: Any) { MappIntelligence.shared()?.trackException(withName: "Test Exception", andWithMessage: "Test Exception Message") } @IBAction func trackCaughtException(_ sender: Any) throws { //fatalError() NSException(name: NSExceptionName(rawValue: "Custom Exception"), reason: "Custom reason", userInfo: ["Localized key" : "Unexpected input"]).raise() } @IBAction func TrackError(_ sender: Any) { let userInfo: [String : Any] = [ NSLocalizedDescriptionKey : NSLocalizedString("Unauthorized", value: "Please activate your account", comment: "") , NSLocalizedFailureReasonErrorKey : NSLocalizedString("Unauthorized", value: "Account not activated", comment: "") ] let error = NSError(domain: "ShiploopHttpResponseErrorDomain", code: 401, userInfo: userInfo) MappIntelligence.shared()?.trackException(with: error) }
Full Code Example
class ExceptionsViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func trackExceptionWithNameAndMessage(_ sender: Any) {
MappIntelligence.shared()?.trackException(withName: "Test Exception", andWithMessage: "Test Exception Message")
}
@IBAction func trackUncaughtException(_ sender: Any) throws {
//fatalError()
NSException(name: NSExceptionName(rawValue: "Custom Exception"), reason: "Custom reason", userInfo: ["Localized key" : "Unexpected input"]).raise()
}
@IBAction func TrackError(_ sender: Any) {
let userInfo: [String : Any] =
[
NSLocalizedDescriptionKey : NSLocalizedString("Unauthorized", value: "Please activate your account", comment: "") ,
NSLocalizedFailureReasonErrorKey : NSLocalizedString("Unauthorized", value: "Account not activated", comment: "")
]
let error = NSError(domain: "ShiploopHttpResponseErrorDomain", code: 401, userInfo: userInfo)
MappIntelligence.shared()?.trackException(with: error)
}
}
First, enable crash tracking in your global configuration settings:
[[MappIntelligence shared] initWithConfiguration:@[@12345] onTrackdomain:@"www.track.mapp.com"]; [[MappIntelligence shared] enableCrashTracking:allExceptionTypes];
Then, you can track the desired exception in your application screens:
- (void)trackExceptionWithNameAndMessage { [[MappIntelligence shared] trackExceptionWithName:@"Test Exception" andWithMessage:@"Test Exception Message"]; } - (void)trackCaughtException { [[[NSException alloc] initWithName:@"Custom exception" reason:@"Custom reason" userInfo:@{@"Localized key" : @"Unexpected input"}] raise]; } - (void)TrackError { NSDictionary* userInfo = @{ NSLocalizedDescriptionKey : NSLocalizedString(@"Unauthorized", @"Please activate your account") , NSLocalizedFailureReasonErrorKey : NSLocalizedString(@"Unauthorized", @"Account not activated") }; NSError* error = [[NSError alloc] initWithDomain:@"ShiploopHttpResponseErrorDomain" code:401 userInfo:userInfo]; [[MappIntelligence shared] trackExceptionWith:error]; }
Full Code Example
#import "ExceptionsViewController.h"
#import <MappIntelligence/MappIntelligence.h>
@interface ExceptionsViewController ()
@end
@implementation ExceptionsViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)trackExceptionWithNameAndMessage {
[[MappIntelligence shared] trackExceptionWithName:@"Test Exception" andWithMessage:@"Test Exception Message"];
}
- (void)trackCaughtException {
[[[NSException alloc] initWithName:@"Custom exception" reason:@"Custom reason" userInfo:@{@"Localized key" : @"Unexpected input"}] raise];
}
- (void)TrackError {
NSDictionary* userInfo = @{
NSLocalizedDescriptionKey : NSLocalizedString(@"Unauthorized", @"Please activate your account") ,
NSLocalizedFailureReasonErrorKey : NSLocalizedString(@"Unauthorized", @"Account not activated")
};
NSError* error = [[NSError alloc] initWithDomain:@"ShiploopHttpResponseErrorDomain" code:401 userInfo:userInfo];
[[MappIntelligence shared] trackExceptionWith:error];
}
@end