Buglife-iOS - Awesome bug reporting for iOS apps

Overview

Platform CocoaPods Compatible Carthage compatible License Twitter

Buglife is an awesome bug reporting SDK & web platform for iOS apps. Here's how it works:

  1. User takes a screenshot, or stops screen recording
  2. User annotates their screenshot & writes feedback
  3. Bug reports are pushed to your team's email/Jira/Slack/Asana/wherever you track bugs.

You can also find Buglife for Android here.


Main Features
πŸ‘€ Free + no account required
πŸ“– Open source
πŸƒπŸ½β€β™€οΈ Fast & lightweight
🎨 Themeable
πŸ“© Automatic caching & retry
πŸ“œ Custom form fields, with pickers & multiline text fields
ℹ️ Advanced logging, with debug / info / warning levels
πŸ“Ž Custom attachments, including JSON & SQLite support
πŸŽ₯ Attach photos & video from camera roll
πŸ“Ÿ String customization
🌎 16 languages supported, with RTL for Arabic + Hebrew
πŸ™ˆ Automatic view blurring for sensitive information
πŸ‘©πŸ½β€πŸ’» Written in Objective-C, with full Swift support

Demo

To try the example app, you can either run pod try Buglife from your command line, OR clone this repository and open the Xcode project under the β€œExample” directory.

Installation

CocoaPods

To integrate Buglife into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'Buglife'

Then, run the following command:

$ pod install

Carthage

Place the following line in your Cartfile:

github "Buglife/Buglife-iOS"

Now run carthage update. Then drag & drop the Buglife.framework in the Carthage/build folder to your project. Refer to the Carthage README for detailed / updated instructions.

Manually

  1. Download the Buglife SDK

  2. Unzip it & pull Buglife.framework into the Frameworks group in your project. In the following dialog box, make sure you have "Copy items if needed" checked.

Code

  1. Import the Buglife framework header into your app delegate.

    // Swift
    import Buglife
    // Objective-C
    #import <Buglife/Buglife.h>
  2. Add the following to your app delegate's application:didFinishLaunchingWithOptions: method.

    // Swift
    Buglife.shared().start(withEmail: "[email protected]")
    // Objective-C
    [[Buglife sharedBuglife] startWithEmail:@"[email protected]"];

    Be sure to replace [email protected] with your own email address; this is where bug reports will be sent to.

Usage

Build & run your app. Once your app is running, shake your device (^⌘Z in the simulator) to report a bug! Bug reports are sent directly to your email address.

You can customize how the bug reporter is invoked. Rather than shake, we recommend configuring the bug reporter to be shown when a user takes a screenshot:

// Swift
Buglife.shared().invocationOptions = .screenshot
// Objective-C
[Buglife sharedBuglife].invocationOptions = LIFEInvocationOptionsScreenshot;

To learn more about customizing Buglife, refer to the documentation.

Requirements

  • Xcode 8 or later
  • iOS 9 or later

Contributing

We don't have any contributing guidelines at the moment, but feel free to submit pull requests & file issues within GitHub!

Comments
  • BugLife barTintColor doesn't seem to be working

    BugLife barTintColor doesn't seem to be working

    Hi,

    I'm trying to give the bug reporter's navigation bar a barTintColor, but I can't seem to get it working. I am using the following code for updating the appearance:

    let appearance = Buglife.shared().appearance
    appearance.tintColor = UIColor.red
    appearance.barTintColor = Colors.black
    appearance.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.red]
    appearance.statusBarStyle = .lightContent
    Buglife.shared().invocationOptions = [.screenshot]
    Buglife.shared().start(withAPIKey: Constants.kBugLifeAPIKey)        
    

    Using the following code I expect the navigationbar to be black with red textlabels. But this is the result:

    simulator screen shot 19 mar 2017 19 40 15

    Any idea on what I'm doing wrong? Thanks in advance

    opened by rickvdl 5
  • Current framework requires extra app permission with XCode 8

    Current framework requires extra app permission with XCode 8

    The current build of the framework installed via cocoapods (version 1.3.0) will trigger an 'Invalid binary' rejection from Apple when an app is submitted to the app store after building with XCode 8.

    Exact rejection text is:

    "This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data."

    It seems at about the GM time of the latest XCode cycle they fired up a new static analyser that is even more aggressive about code that even looks like it touches the camera or photo library (Other libraries are triggering various other warnings too - http://stackoverflow.com/questions/39383289/ios-10-gm-release-error-when-submitting-apps-this-app-attempts-to-access-privac)

    opened by richardgroves 5
  • App crashes after shaking. Invalid parameter not satisfying: drawn

    App crashes after shaking. Invalid parameter not satisfying: drawn

    Using Buglife 2.8.0.

    Crashed at https://github.com/Buglife/Buglife-iOS/blob/master/Source/Additions/UIApplication+LIFEAdditions.m#L101

    Fatal Exception: NSInternalInconsistencyException
    Invalid parameter not satisfying: drawn
    

    There is the error trace if helpful: screen shot 2018-06-25 at 5 43 35 pm

    opened by xuezhma 4
  • Update Docs to explain how to customize floating button

    Update Docs to explain how to customize floating button

    I'd like to understand how to:

    • Customize where the button is displayed upon first viewing (I don't like where it starts)
    • Customize the icon/image
    • Perhaps change it from floating to stationary
    • I use an onboarding repo called Instructions which can hook a label onto a UI element .. like UIelement.helpLabel.text = "This is the exciting UIelement" .. How can I do that with the floating button? I'm using Swift and know little about poking around in objc
    opened by bbookman 3
  • Add attachement button (iOS)

    Add attachement button (iOS)

    Hi Do you guys plan to make the add attachement button optional and not only based on the camera roll permission.
    Do you accept pull requests if we implement this small opt in feature ? This is how we'd like to use it :

    Buglife.shared().makeAddAttachementButtonAvailable = NO; //YES is default value
    
    opened by imanzarrabian 3
  • Programmatically add fields to a bug report

    Programmatically add fields to a bug report

    I know you can make an attachment and tag it along, but it would be incredibly useful to add custom fields, or just 1 if adding multiple would be hard, to a bug report. Then have that information get passed along to the current integrations as well.

    opened by ekimia 3
  • Can't Set Invocation Option to None

    Can't Set Invocation Option to None

    We've decided to switch from using a floating button to manually triggering bug reports. This of course means setting Buglife.sharedBuglife().invocationOptions = .None as shown on your documentation.

    Previous AppDelegate.swift (Truncated)

    ...
    
    import Buglife
    
    @UIApplicationMain
    class AppDelegate: ..., BuglifeDelegate {
    
        ...
    
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
            ...
    
            // Setup Bug Reporting
            Buglife.shared().start(withAPIKey: "xxx")
            Buglife.shared().invocationOptions = [.floatingButton]
            Buglife.shared().delegate = self
    
            ...
    
            // Finish Setup
            return true
        }
    
    ...
    

    However, this doesn't seem to be working:

    Attempt 1 Code: swift Buglife.sharedBuglife().invocationOptions = .None Error: 'None' has been renamed to 'none'

    Attempt 2 Code: swift Buglife.sharedBuglife().invocationOptions = .none Error :'none' is unavailable: use [:] to construct an empty option set

    Attempt 3 Code: swift Buglife.sharedBuglife().invocationOptions = [:] Error: Contextual type 'LIFEInvocationOptions' cannot be used with dictionary literal

    Attempt 4 Code: swift Buglife.sharedBuglife().invocationOptions = [.None] Error: 'None' has been renamed to 'none'

    Attempt 5 Code: swift Buglife.sharedBuglife().invocationOptions = [.none] Error: 'none' is unavailable: use [:] to construct an empty option set

    As you can see, for some strange reason we can utilize every invocation option enumerated by LIFEInvocationOptions except for none. I'm using Swift 3 with Xcode 8. Any ideas?

    opened by merktassel 3
  • Setting .invocationOptions = [] still results in prompt when recording video

    Setting .invocationOptions = [] still results in prompt when recording video

    I am trying to use Buglife with a purely manual invocation.

        Buglife.shared().invocationOptions = []
        Buglife.shared().start(withAPIKey: "<my api key>")
    

    My app records the screen using ReplayKit's RPScreenRecorder. Whenever a recording is finished, Buglife shows up with a prompt whether I would like to add feedback to the recording.

    Any way to disable this prompt?

    opened by okvivi 2
  • Feature: Invert Button Colors on Dark Background

    Feature: Invert Button Colors on Dark Background

    Our app's background is black, which makes the Buglife icon quite difficult to locate and use. Perhaps the icon colors could be inverted depending on how dark the background is?

    opened by merktassel 2
  • App's  UI Interaction  not working  after submitting a Bug

    App's UI Interaction not working after submitting a Bug

    After submitting a bug its showing the Bug submitted alert .after that the App gone freezed state. no UI Interaction .dont Know the Actual Reason for that wish to get a Reply ASAP.

    opened by rahul-apple 2
  • Should use aliases instead of duplicate files in .framework

    Should use aliases instead of duplicate files in .framework

    Instead of having duplicate headers and binary throughout the .framework, a single binary and set of headers under .framework/Versions/A would suffice and then .framework/Versions/Current would alias to .framework/Versions/A, .framework/Headers would alias to .framework/Versions/A/Headers, .framework/Modules would alias to .framework/Versions/A/Modules, and .framework/Buglife would alias to .framework/Versions/A/Buglife. This would cut the size of the framework by one third (66%).

    opened by NSProgrammer 2
  • Support for Swift Package Manager

    Support for Swift Package Manager

    As Swift Package Manager is getting more and more support (moreover with the latest additions in Swift 5.3), is there any chance we get support for it soon?

    For us it'd be a huge deal as we're migrating from Carthage to SPM πŸ‘

    opened by kikettas 0
  • Bug Life not working..

    Bug Life not working..

    I added pod 'Buglife' in pod file.

    It has no error when building. and added Privacy - Photo Library Usage Description in Info.plist.

    But when taking a screenshot , it has no action triggered.

    I tested this sdk on empty project. it's nothing to do action.

    A diffrenent thing with sample is using SceneDelegate.

    When co-existing with SceneDelagte, is there any settings I have to do?

    opened by mkjwa 1
  • typo in strings

    typo in strings

    LIFEStringKey LIFEStringKey_DiscardReportAlertCancel = @"Nevermind";

    Never Mind is two words. https://www.grammarly.com/blog/nevermind-or-never-mind/

    opened by ghost 0
Releases(2.10.0)
Owner
Buglife
Buglife
Bitrise-iOS - Client iOS app for bitrise.io πŸš€

?? SwiftUI version is available as beta ?? Bitrise iOS Client app ?? Features βœ… App List GET /me/apps Shows last visited app page on launch βœ… Build Li

Toshihiro Suzuki 142 Dec 19, 2022
A native Jellyfin client for Apple platforms (iOS, macOS and tvOS)

Jellyfin Swift (working title) is a native Swift app targeting all modern Apple devices (iOS, ipadOS, tvOS and macOS).

Julien Machiels 3 Jun 7, 2021
AppLove - View iOS app reviews in multiple selected territories with translation option.

App Love Note: Swift Version 2.2 currently, will update to Swift 3/XCode 8 after cocoapods are updated to Swift 3. Features View iOS Customer App Revi

Woodie Dovich 52 Nov 19, 2022
BaseConverter-iOS - The fast and easy way to convert numbers with tons of possibilities!

BaseConverter-iOS The fast and easy way to convert numbers with tons of possibilities! With BaseConverter, convert your numbers from and to: Decimal B

Groupe MINASTE 3 Feb 8, 2022
Dash-iOS - Dash gives your iPad and iPhone instant offline access to 200+ API documentation sets

Discontinued Dash for iOS was discontinued. Please check out Dash for macOS instead. Dash for iOS Dash gives your iPad and iPhone instant offline acce

Bogdan Popescu 7.1k Dec 29, 2022
DevSwitch - An iOS app for switching between countries on the App Store with ease.

Archived as of 24/04/2021. Apple has again broken the URLs required for storefront switching. I've decided to archive DevSwitch due to this. If Apple

Aaron Pearce 432 Jan 3, 2023
IOS - Unofficial app for Swift Evolution

EVOlution - iOS The goal of this project is for the version 1.0 was: bring to iOS the experience provided by Swift Evolution website. Now we are shift

EVOlution App 235 Dec 19, 2022
Awesome bug reporting for iOS apps

Buglife is an awesome bug reporting SDK & web platform for iOS apps. Here's how it works: User takes a screenshot, or stops screen recording User anno

Buglife 498 Dec 17, 2022
In-app feedback and bug reporting tool for apps.

Instabug iOS SDK Instabug is an in-app feedback and bug reporting tool for mobile apps. With just a simple shake, your users or beta testers can repor

Instabug 274 Dec 14, 2022
Matthew Asaminew 0 Jan 25, 2022
In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More.

The debugger tool for iOS developer. Display logs, network request, device informations, crash logs while using the app. Easy accessible with its bubble head button ?? . Easy to integrate in any apps, to handle development or testing apps easier. First version, there is plenty of room for improvement.

Remi ROBERT 1.8k Dec 29, 2022
Dotzu In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More.

Dotzu In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More. The debugger tool for iOS developer. Display logs, n

Remi ROBERT 1.8k Jan 3, 2023
A simple Swift package for measuring and reporting the time taken for operations

Duration A simple Swift package for measuring and reporting the time taken for operations. It is derived from a version for Playgrounds that I blogged

Swift Studies 325 Nov 6, 2022
Lightweight MetricKit-based diagnostics reporting

MeterReporter Lightweight MetricKit-based diagnostics reporting. MeterReporter will capture MetricKit payloads and relay them to a backend. It uses Me

Chime 24 Dec 26, 2022
β˜€οΈ SeSAC Daily Reporting

SeSAC β˜€οΈ SeSAC Daily Reporting iOS λ²ˆλ“€ 아이디, Bundle Identifier IBOutlet Collection μ—°κ²° μ‹œ weak μˆ˜μ‹μ–΄λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 이유 Alpha vs Opacity Image Rendering Mode, Orig

Taehyeon Kim 24 Nov 1, 2022
Flexible bug report framework for iOS

Clue is a simple smart-bug report framework for iOS, which allows your users to record full bug/crash report and send it to you as a single .clue file

Ahmed Sulaiman 279 Nov 3, 2022
POC for a bug with react-native-webview crashing on IOS 16.1

POC Shared Worker issues with IOS 16.1 webview Apple Developers post with workaround Webkit confirmed issue Start a simple http server with shared wor

Mauri de Souza Meneguzzo 2 Oct 31, 2022
Butterfly is a lightweight library for integrating bug-report and feedback features with shake-motion event.

Butterfly is a lightweight library for integrating bug-report and feedback features with shake-motion event. Goals of this project One of th

Zigii Wong 410 Sep 9, 2022
Aardvark is a library that makes it dead simple to create actionable bug reports.

Aardvark Aardvark makes it dead simple to create actionable bug reports. Aardvark is made up of a collection of frameworks that provide different bug

Square 257 Dec 19, 2022
Describing a bug with Sheet and Menu

MenuTest Describing a bug with Sheet and Menu This repository is related to a question in Apples developers forum, with id: 692338 Dismiss via Button

Tim 0 Oct 14, 2021