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.