All Projects → gabek → GitYourFeedback

gabek / GitYourFeedback

Licence: MIT license
Let users submit feedback, with screenshots, directly from your iOS app to Github Issues

Programming Languages

swift
15916 projects
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to GitYourFeedback

screenshot-tweet
Screenshot a tweet.
Stars: ✭ 66 (+10%)
Mutual labels:  screenshot
resumify
Capture screenshot and make PDF on your HTML presentation.
Stars: ✭ 28 (-53.33%)
Mutual labels:  screenshot
asciidoctorj-screenshot
A set of AsciidoctorJ extensions for adding automated screenshots to an AsciiDoc document.
Stars: ✭ 32 (-46.67%)
Mutual labels:  screenshot
find-comment
A GitHub action to find an issue or pull request comment
Stars: ✭ 81 (+35%)
Mutual labels:  github-issues
Katastrophe
Command Line Tool to download torrents
Stars: ✭ 85 (+41.67%)
Mutual labels:  screenshot
zipline
A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!
Stars: ✭ 215 (+258.33%)
Mutual labels:  screenshot
bug-hunter-game
Bug Hunter Game is an web service that turns GitHub Issues into a game.
Stars: ✭ 28 (-53.33%)
Mutual labels:  github-issues
video-snapshot
Get snapshots from a video file in the browser 🎥 🌅
Stars: ✭ 63 (+5%)
Mutual labels:  screenshot
Screenshot-Landing-Page
Tailwind CSS Starter Template - Screenshot Landing Page
Stars: ✭ 100 (+66.67%)
Mutual labels:  screenshot
animated-lamp
Telegram Bot For Screenshot Generation
Stars: ✭ 162 (+170%)
Mutual labels:  screenshot
vitalsource-printer
Take screenshot, click next page, then do it again...
Stars: ✭ 51 (-15%)
Mutual labels:  screenshot
LibQtScreen
Qt library for making directx and opengl screenshots.
Stars: ✭ 43 (-28.33%)
Mutual labels:  screenshot
EasyScreenshot
The easy way to take screenshots of your app programmatically.
Stars: ✭ 16 (-73.33%)
Mutual labels:  screenshot
ngx-feedback
Angular user feedback collector library
Stars: ✭ 17 (-71.67%)
Mutual labels:  screenshot
image-uploader
A program for uploading images, screenshots and other files to a few dozen file hosting services. It has screenshooting capabilities and integrated image editor.
Stars: ✭ 100 (+66.67%)
Mutual labels:  screenshot
screentray-distribution
macOS app for capturing, annotating and sharing screenshots
Stars: ✭ 28 (-53.33%)
Mutual labels:  screenshot
yoda
GitHub extension for agile project management, using the issues subsystem.
Stars: ✭ 86 (+43.33%)
Mutual labels:  github-issues
autoscreen
Automated screen capture utility
Stars: ✭ 76 (+26.67%)
Mutual labels:  screenshot
Live-Desktop-Capture
A Live Desktop Capture using Go and WebSockets
Stars: ✭ 42 (-30%)
Mutual labels:  screenshot
AutoScreenshot
Automatic screenshot maker for Windows
Stars: ✭ 49 (-18.33%)
Mutual labels:  screenshot

GitYourFeedback

Platform version Swift Version

A lot of organizations run on GitHub, not just for the code repositories, but also for the heavy use of Issues, the bug tracking/feedback reporting tool. Instead of routing your users to GitHub and expecting them to file issues, this is an option to support it right from inside your iOS application.

Example

To run the example project:

  • Clone the repo, and run pod install from the Example directory.
  • Edit Config.swift and add your GitHub details (user, api key, repo) and Google Cloud Storage bucket name.
  • This must be a publicly accessible Google Cloud Storage bucket, as it needs permissions to upload and read the file.
  • Run the project either on a device and take a screenshot, or press the button in the simulator to bring up the feedback interface.

The client will look like:

Screenshot

While the resulting GitHub issue will look like:

Screenshot

Requirements

  • Google Cloud Storage bucket for storing the screenshots.
  • GitHub repository for storing the issues.

Dependencies

  • If you install via Cocoapods these dependencies are handled for you, as they're listed in the Podspec.
  • CLImageEditor is used for editing the screenshot after it's taken. This can be fore redacting personal information or calling out speficic items.
  • GRMustache is used to enable the Mustache templating used for issueTemplate.md. It allows iteration of the actual issue content without code.

Installation

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

pod "GitYourFeedback"

Or, if you’re using Carthage, add GitYourFeedback to your Cartfile:

github "gabek/GitYourFeedback"

  1. Generate a Personal Access Token for the GitHub user who will be saving the issues in your repo.

  2. In your project's Info.plist add a key of NSPhotoLibraryUsageDescription with a string explaining that your use of the photo library is for submitting screenshots. This is user-facing so use your own judgement.

  3. Create a FeedbackReportingOptions object and fill in the properties. As simple as:

let feedbackOptions = FeedbackReportingOptions(token: "abc123", user: "repoman", repo: "repoman/myRepository")

Alternatively you can create your own struct that adheres to the FeedbackOptions protocol and use that instead. So you don't have to keep all the intialization values inline.

  1. In your AppDelegate, or some other long-lived controller:
let feedbackReporter = FeedbackReporter(options: feedbackOptions, datasource: self)

You'll need to implement FeedbackReporterDatasource in order to tell the FeedbackReporter where to upload screenshots. The simplest implementation would be something like:

func uploadUrl(_ completionHandler: (String) -> Void) {
    let filename = String(Date().timeIntervalSince1970) + ".jpg"
    let url = "https://www.googleapis.com/upload/storage/v1/b/mybucketname.appspot.com/o?name=\(filename)"
    completionHandler(url)
}

This is also where you could generate, possibly from your backend, a signed URL so the Google Cloud Storage bucket doesn't need to be completely public.

There are other methods you can implement as well, to provide additional information in the issues that get filed.

func additionalData() -> String?
func issueLabels() -> [String]?

Presenting the Feedback interface

The interface will automatically display as a result of a user taking a screenshot. If this is the first time the user has taken a screenshot in your application they will be greeted with an iOS permissions dialog stating they need to grant your app access to the user's Photos in order to use the screenshot. You may want to emphasize that the user should accept this. It uses the copy you added in your Info.plist's NSPhotoLibraryUsageDescription key.

You could also manually fire feedback.display() with an optional specific view controller to present from. With this approach the user will have to select their own screenshot manually if they want to send one.

Demo

Author

Gabe Kangas, [email protected]. @gabek

Icon credits: designed by Madebyoliver from Flaticon.

License

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].