The official iOS SDK for Backchannel.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Source Remove coordinator from childCoordinators Nov 28, 2016
.gitignore Initial code commit Nov 3, 2015
Backchannel.podspec update podspec Aug 22, 2016

Backchannel iOS SDK

Backchannel is a quick, convenient way for your beta testers to report their feedback — right from within your app itself. With the tap of a button, they can report a bug, offer feedback on a new feature, or simply ask a question. Backchannel can also detect when users take screenshots of your app, and guide them to the correct feedback channel, with the screenshot already attached.


Backchannel is a great citizen in your app.

  • Backchannel is open-source, so it's easy to see how things work.
  • Backchannel's classes are all under 250 lines of code.
  • Backchannel is standalone; it has no dependencies.
  • Backchannel has a three-letter class prefix, BAK, to prevent collisions.
  • Backchannel doesn't do any swizzling.
  • Backchannel has zero categories. Your app's Foundation classes are safe.


  • iOS 7.0+
  • Xcode 6.3


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

pod 'Backchannel'

Then, run pod install.


The simplest way to present Backchannel is to use Backchannel class. Wire up a button like so:

- (IBAction)buttonTapped:(id)sender {
    [[Backchannel setAPIKey:@"your_api_key"] presentModallyOverViewController:self];

or its Swift equivalent:

@IBAction func buttonTapped(sender: UIButton) {

Once the API key is set, you can use the +backchannel class method to access Backchannel. The Swift runtime removes this method, so you can access the Backchannel singleton by just initializing the Backchannel class with Backchannel().

Screenshot detection

To use Backchannel's screenshot detection features, Backchannel needs to know your app's rootViewController. To configure it, set up Backchannel with an API key and a root view controller during your app's initialization:

[Backchannel setAPIKey:@"your_api_key" rootViewController:rootViewController];

or, in Swift:

Backchannel.setAPIKey("your_api_key", rootViewController:rootViewController);

After this API key is set, you can use the +backchannel class method (sharedBackchannel() in Swift) to present Backchannel:

- (IBAction)buttonTapped:(id)sender {
    [[Backchannel backchannel] presentModallyOverViewController:self];

or, in Swift:

@IBAction func buttonTapped(sender: UIButton) {


Pull requests are always welcome!


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