Git Product home page Git Product logo

shakedown's Introduction

Shakedown

Simple, in-app bug reporting for human beings.

Setup

To get going, just clone the repo and drag the contents of your repository into your project, and call [SHDShakedown sharedShakedown] at launch.

Triggers

By default, Shakedown will begin listening for shake events automatically on debug builds. You can also call showButton on SHDShakedown, which will display a button in the status bar of the application (if it has one).

Reporting Method

It is highly recommended to configure a reporter to suit your specific needs.

Configuring the Reporter

For example, you can configure the email reporter like so:

SHDShakedownEmailReporter *reporter = [[SHDShakedownEmailReporter alloc] init];
reporter.recipient = @"[email protected]";
[SHDShakedown sharedShakedown].reporter = reporter;

Various reporters will have different things to configure. For example, one that posts to on online service may need an API key or login credentials, or what project to pust bugs to.

Included Reporters

Supported iOS Versions

Shakdown works on iOS 5.0 and up.

A note on ARC

Shakedown uses ARC. To get things working in a non-ARC project, set the -fobjc-arc compiler flag on all the files prefixed with SHD.

Private API Usage & Preprocessor Flags

Shakedown uses the private API UIGetScreenImage(). This allows us to capture whatever's on the screen (including some fancier OpenGL stuff), but is not permitted by Apple in the App Store. The relevant calls are wrapped in an #ifdef DEBUG call, so it will be compiled out in App Store builds, but please be aware of it. Shakedown will, by default only initialize on builds with the DEBUG flag set. If you want to do a Release build with Shakedown enabled (for example, for TestFlight), you can define an ADHOC preprocessor flag.

shakedown's People

Contributors

maxgoedjen avatar jeanregisser avatar

Stargazers

闫冰 avatar YoungShook avatar Dobpbiu avatar himkt avatar 时点软件冯成林 avatar Andrew Wooster avatar Gabriel Debes avatar Kayla Rose avatar Scott Anderson avatar  avatar Luis Solano avatar Omid Mikhchi avatar Anton avatar Steven Zhang avatar Suleyman Melikoglu avatar John Rowe avatar Kyle avatar Jens Kohl avatar Billy Tobon avatar Tsyganov Stanislav avatar Paul Young avatar Michael Thiel avatar Trunal Bhanse avatar Aaron Geisler avatar Richard Venneman avatar Carlton Gibson avatar Clayton Ferris avatar Kitsion avatar Zaharia Andrei avatar Fabian Guerra Soto avatar  avatar Matt Ronge avatar Javi Lorbada avatar Tim Gostony avatar mayulu avatar Manoj Mahapatra avatar Martin Stolz avatar Georg Kitz avatar Tom Romano avatar Andreas Schubert avatar Imran Ansari avatar Damian Sullivan avatar Giri Senji avatar Daniel Martyn avatar palaniraja avatar Michael Hood avatar Wayne Zhang avatar Pavel Dusatko avatar Matthias Tretter avatar Rubén Méndez avatar Jonathan Willing avatar Romain Briche avatar

Watchers

Giri Senji avatar  avatar Tom Romano avatar mayulu avatar James Cloos avatar  avatar

shakedown's Issues

License file

Hi,

I'm so glad to have found your project as I was willing to implement something similar myself!
Anyway what is the license of the project? I really wish to integrate it into our internal apps.
Could you add a License file to the repository?

Thanks, and awesome job!

Not running

Iam getting this error when trying to run via device

Undefined symbols for architecture arm64:
"_UIGetScreenImage", referenced from:
+[SHDBugReport takeScreenshot] in SHDBugReport.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Please add semantic version tags

I’ve recently added Shakedown to the CocoaPods package manager repo.

CocoaPods is a tool for managing dependencies for OSX and iOS Xcode projects and provides a central repository for iOS/OSX libraries. This makes adding libraries to a project and updating them extremely easy and it will help users to resolve dependencies of the libraries they use.

However, Shakedown doesn't have any version tags. I’ve added the current HEAD as version 0.0.1, but a version tag will make dependency resolution much easier.

Semantic version tags (instead of plain commit hashes/revisions) allow for resolution of cross-dependencies.

In case you didn’t know this yet; you can tag the current HEAD as, for instance, version 1.0.0, like so:

$ git tag -a 1.0.0 -m "Tag release 1.0.0"
$ git push --tags

Allow client apps to override the SHDBugReport class

Hi,

In my app I want to have a custom formatting for the bug report text.
For now I've swizzled the formattedReport method of the SHDBugReport with my own custom method.
It would be much nicer if we could set the SHDBugReport subclass we'd like to use.

Here's how I see it:

// Use a custom bug report class
[SHDShakedown sharedShakedown].bugReportClass = [MyCustomBugReport class];

Also setBugReportClass would check if the given class is a subclass of SHDBugReport to ensure it's compatible with the rest of the code.

What do you think?
This is quite trivial, I can send a pull request with these changes if you agree with it.

Multiple reporter support

Post to Rally & Slack, for example.
Potentially allow chaining of some sort? i.e. file in ticket tracker -> post link to Slack channel.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.