These docs are for v1.0. Click to read the latest docs for v1.0.1.
  1. Take the steps described in Integrate DevMateKit if you haven't done it yet.
  2. Add the following method to your application delegate class implementation:
- (IBAction)showFeedbackDialog:(id)sender {
    [DevMateKit showFeedbackDialog:nil inMode:DMFeedbackIndependentMode];
}
@IBAction func showFeedbackDialog(sender: AnyObject?)  {
    DevMateKit.showFeedbackDialog(nil, inMode: DMFeedbackMode.IndependentMode)
}
  1. Connect the newly added action method with the corresponding menu item or button in the XIB files.
  2. Build and run your application.

Send a feedback message as you defined in the previous step. If everything is configured correctly, your message will be displayed in the Feedback Management section of DevMate.

To learn more, see a GitHub example.

Customization

You can automatically fill in 'Name' and 'Email' fields of a feedback reporting dialog with the values specified by a user during activation. Also, you can add some predefined text to the feedback message field.

@property (nonatomic, retain) NSDictionary *defaultUserInfo;
 
FOUNDATION_EXPORT NSString *const DMFeedbackDefaultUserNameKey; // NSString object
FOUNDATION_EXPORT NSString *const DMFeedbackDefaultUserEmailKey; // NSString object
FOUNDATION_EXPORT NSString *const DMFeedbackDefaultCommentKey; // NSString object

To send a custom app log in a feedback message to DevMate, specify URL to this log file(s).

@property (nonatomic, retain) NSArray *logURLs;

Also, you can select the feedback window behavior to:

  • independent (by default)
  • child
  • modal
  • sheet
  • floating

by setting the desired DMFeedbackMode during the method call.

You can also set additional action that will be performed after the feedback message is sent, for example:

- (IBAction)showFeedbackDialog:(id)sender {
    DMFeedbackController *controller = [DMFeedbackController sharedController];
    [controller showFeedbackWindowInMode:DMFeedbackIndependentMode completionHandler:^(BOOL success) {
        NSLog(@"Did finish feedback with success: %@", success ? @"TRUE" : @"FALSE");
    }];
}
@IBAction func showFeedbackDialog(sender: AnyObject?) {
    let controller = DMFeedbackController.sharedController()
    controller.showFeedbackWindowInMode(DMFeedbackMode.IndependentMode) { (success) -> Void in
        let message = success ? "TRUE" : "FALSE"
        print("Did finish feedback with success: \(message)")
    }
}

In this case, after sending a feedback successfully, a user receives 'Did finish feedback with success: TRUE' console message. Otherwise, they receive 'Did finish feedback with success: FALSE' message.