Skip to content

Easier bug reports on iOS. Just take a screenshot in your app, doodle on the image, and send it away! Bug reports automatically include device metadata with free/used memory, disk and battery status. Currently, reports can be added to Github Issues, JIRA Issues, Gitlab Issues or sent as emails.

License

rahuljiresal/BugReportKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BugReportKit

CI Status Version License Platform

About

We've always wanted bug reports to be easy. Our users should not have to jump through hoops to tell us what happened on the app. BugReportKit is an attempt to make bug reports easy.

Once BugReportKit is integrated into your app (check the code examples below), all the user needs to do is take a screenshot, point to the bug on the screen by doodling on it, write a small description, and send it away! BugReportKit currently allows you to automatically send bug reports as Github Issues, JIRA Issues, Gitlab Issues, or Emails.

Here's an example of an issue submitted by BugReportKit.

And here is a GIF'ed video --

BugReportKit GIF

To run the sample project, clone the repo, and run pod install from the Example directory first.

Installation

BugReportKit is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "BugReportKit"

Usage

Github and JIRA do not support uploading images through their APIs. Hence we need a place to upload images publicly and include the link to the Github/JIRA issues. BugReportKit includes the AWS S3 uploader, but you can easily create your own by implementing the BRKImageUploader protocol.

Send Bug Reports to Github Issues

You need these additional sub-pod for Github.

pod "BugReportKit"
pod "BugReportKit/GithubReporter"

Then, in your AppDelegate,

#import <BRK.h>
#import <BugReportKit/BRKGithubReporter.h>
#import <BugReportKit/BRKS3ImageUploader.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    BRKS3ImageUploader* uploader = [[BRKS3ImageUploader alloc] initWithS3AccessKey:S3_ACCESSKEY
                                                                         secretKey:S3_SECRETKEY
                                                                        bucketName:S3_BUCKET];
    BRKGithubReporter* reporter = [[BRKGithubReporter alloc] initWithGithubUsername:GITHUB_USERNAME
                                                                           password:GITHUB_PASSWORD
                                                                         repository:GITHUB_REPO
                                                                              owner:GITHUB_OWNER
                                                                      imageUploader:uploader];
    
    [BugReportKit initializeWithReporter:reporter delegate:self];
    [BugReportKit setUniqueUserIdentifier:@"rahul.jiresal@gmail.com"]; // (optional) It can be anything that uniquely identifies your user in case you want to contact them
    
    return YES;
}

Send Bug Reports to JIRA Issues

You need these additional sub-pod for Github.

pod "BugReportKit"
pod "BugReportKit/JIRAReporter"

Then, in your AppDelegate,

#import <BRK.h>
#import <BugreportKit/BRKJIRAReporter.h>
#import <BugReportKit/BRKS3ImageUploader.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    BRKS3ImageUploader* uploader = [[BRKS3ImageUploader alloc] initWithS3AccessKey:S3_ACCESSKEY
                                                                         secretKey:S3_SECRETKEY
                                                                        bucketName:S3_BUCKET];
    BRKJIRAReporter* reporter = [[BRKJIRAReporter alloc] initWithJIRABaseURL:JIRA_URL
                                                                    username:JIRA_USERNAME
                                                                    password:JIRA_PASSWORD
                                                                  projectKey:JIRA_PROJECTKEY
                                                               imageUploader:uploader];
    
    [BugReportKit initializeWithReporter:reporter delegate:self];
    [BugReportKit setUniqueUserIdentifier:@"rahul.jiresal@gmail.com"]; // (optional) It can be anything that uniquely identifies your user in case you want to contact them
    
    return YES;
}

Send Bug Reports to Gitlab Issues

You need these additional sub-pod for Gitlab.

pod "BugReportKit"
pod "BugReportKit/GitlabReporter"

Then, in your AppDelegate,

#import <BRK.h>
#import <BugReportKit/BRKGitlabReporter.h>
#import <BugReportKit/BRKS3ImageUploader.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    BRKS3ImageUploader* uploader = [[BRKS3ImageUploader alloc] initWithS3AccessKey:S3_ACCESSKEY
                                                                         secretKey:S3_SECRETKEY
                                                                        bucketName:S3_BUCKET];
    BRKGitlabReporter* reporter = [[BRKGitlabReporter alloc] initWithGitlabUsername:GITLAB_USERNAME
                                                                           password:GITLAB_PASSWORD
                                                                         repository:GITLAB_REPO
                                                                              owner:GITLAB_OWNER
                                                                      imageUploader:uploader];
    
    [BugReportKit initializeWithReporter:reporter delegate:self];
    [BugReportKit setUniqueUserIdentifier:@"rahul.jiresal@gmail.com"]; // (optional) It can be anything that uniquely identifies your user in case you want to contact them
    
    return YES;
}

Send Bug Reports via Email

Note: The dependency used by the Email sub-pod has a huge static library (100+ MB). I would not recommend using emails to report bugs unless you don't have any other options.

You need these additional sub-pod for Github.

pod "BugReportKit"
pod "BugReportKit/EmailReporter"

Then, in your AppDelegate,

#import <BRK.h>
#import <BugreportKit/BRKEmailReporter.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    BRKEmailReporter* reporter = [[BRKEmailReporter alloc] initWithHostname:EMAIL_HOSTNAME
                                                                       port:EMAIL_HOSTPORT
                                                                   username:EMAIL_USERNAME
                                                                   password:EMAIL_PASSWORD
                                                             connectionType:BRKEmailConnectionTypeClear
                                                                  toAddress:EMAIL_TO];
    
    [BugReportKit setUniqueUserIdentifier:@"rahul.jiresal@gmail.com"]; // (optional) It can be anything that uniquely identifies your user in case you want to contact them
    
    return YES;
}

You can also add BugReportKitDelegate methods

#pragma mark - BugReportKitDelegate

- (void)bugReportSentSuccessfully {
    NSLog(@"Bug Report Was Sent Successfully");
}

- (void)bugReportFailedToSend {
    NSLog(@"Bug Report Failed");
}

- (void)bugReportCancelled {
    NSLog(@"Bug Report Was Cancelled");
}

Author

Let me know if you like the library, or have any suggestions, let me know. I plan to maintain this library regularly. Any pull requests are welcome!

Rahul Jiresal, rahul.jiresal@gmail.com, Website, Twitter

Love this project? Did it save you some time? Wanna buy me a beer and say thanks? donation

I'm available as a contract developer! Hire me!

License

BugReportKit is available under the MIT license. See the LICENSE file for more info.

About

Easier bug reports on iOS. Just take a screenshot in your app, doodle on the image, and send it away! Bug reports automatically include device metadata with free/used memory, disk and battery status. Currently, reports can be added to Github Issues, JIRA Issues, Gitlab Issues or sent as emails.

Resources

License

Stars

Watchers

Forks

Packages

No packages published