{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","params":[],"results":{"codes":[]},"settings":""},"next":{"description":"","pages":[]},"title":"Feedback","type":"basic","slug":"feedback","excerpt":"","body":"1. Take the steps described in [Integrate DevMateKit](doc:integrate-devmate-kit) if you haven't done it yet.\n2. Add the following method to your application delegate class implementation:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"- (IBAction)showFeedbackDialog:(id)sender {\\n [DevMateKit showFeedbackDialog:nil inMode:DMFeedbackIndependentMode];\\n}\",\n \"language\": \"objectivec\"\n },\n {\n \"code\": \":::at:::IBAction func showFeedbackDialog(sender: AnyObject?) {\\n DevMateKit.showFeedbackDialog(nil, inMode: DMFeedbackMode.IndependentMode)\\n}\",\n \"language\": \"swift\",\n \"name\": \"Swift\"\n }\n ]\n}\n[/block]\n3. Connect the newly added action method with the corresponding menu item or button in the XIB files.\n4. Build and run your application. \n\nSend a feedback message as you defined in the previous step. If everything is configured correctly, your message will be displayed in the [Feedback Management](doc:feedback-management) section of DevMate.\n\nTo learn more, see a [GitHub example](https://github.com/DevMate/DevMateKit/tree/master/Examples/FeedbackExample). \n\n## Customization\nYou 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.\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"@property (nonatomic, retain) NSDictionary *defaultUserInfo;\\n \\nFOUNDATION_EXPORT NSString *const DMFeedbackDefaultUserNameKey; // NSString object\\nFOUNDATION_EXPORT NSString *const DMFeedbackDefaultUserEmailKey; // NSString object\\nFOUNDATION_EXPORT NSString *const DMFeedbackDefaultCommentKey; // NSString object\",\n \"language\": \"objectivec\"\n }\n ]\n}\n[/block]\nTo send a custom app log in a feedback message to DevMate, specify URL to this log file(s).\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"@property (nonatomic, retain) NSArray *logURLs;\",\n \"language\": \"objectivec\"\n }\n ]\n}\n[/block]\nAlso, you can select the feedback window behavior to:\n* independent (by default)\n* child\n* modal\n* sheet\n* floating\n\nby setting the desired `DMFeedbackMode` during the method call.\n\nYou can also set additional action that will be performed after the feedback message is sent, for example:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"- (IBAction)showFeedbackDialog:(id)sender {\\n DMFeedbackController *controller = [DMFeedbackController sharedController];\\n [controller showFeedbackWindowInMode:DMFeedbackIndependentMode completionHandler:^(BOOL success) {\\n NSLog(@\\\"Did finish feedback with success: %@\\\", success ? @\\\"TRUE\\\" : @\\\"FALSE\\\");\\n }];\\n}\",\n \"language\": \"objectivec\"\n },\n {\n \"code\": \"@IBAction func showFeedbackDialog(sender: AnyObject?) {\\n let controller = DMFeedbackController.sharedController()\\n controller.showFeedbackWindowInMode(DMFeedbackMode.IndependentMode) { (success) -> Void in\\n let message = success ? \\\"TRUE\\\" : \\\"FALSE\\\"\\n print(\\\"Did finish feedback with success: \\\\(message)\\\")\\n }\\n}\",\n \"language\": \"swift\",\n \"name\": \"Swift\"\n }\n ]\n}\n[/block]\nIn 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.","updates":["55a4fd0502b09d1900d00abe"],"order":7,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"54d0e25a095c470d00d16420","createdAt":"2015-02-03T14:59:38.393Z","parentDoc":null,"user":"547cd6ac78fd57080023ca99","__v":15,"category":{"sync":{"isSync":false,"url":""},"pages":["547cd7682eaee50800ed108f","54c8fc417a11f60d0022a83f","54c8fc8b4574700d00f01654","54c903d90174630d00efa894","54c904217a11f60d0022a851","54c904470174630d00efa899","54c9ed8a4574700d00f01869","54c9f27d7a11f60d0022aa82","54d0e25a095c470d00d16420","54d0f835cfd8ce0d007de88a","54d1f61c441be60d00b981cf","54d216df441be60d00b981fe","54f727090585de250064e20d"],"title":"Get Started: Mac OS Apps","slug":"start","order":0,"from_sync":false,"reference":false,"_id":"547cd7672eaee50800ed108d","project":"547cd7662eaee50800ed1089","version":"547cd7662eaee50800ed108c","__v":13,"createdAt":"2014-12-01T21:02:31.346Z"},"project":"547cd7662eaee50800ed1089","version":{"version":"1.0","version_clean":"1.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":false,"is_deprecated":true,"categories":["547cd7672eaee50800ed108d","54c8f8ae0174630d00efa874","54c8f8bd7a11f60d0022a832","54c8f8c60174630d00efa876","54c8f8f10174630d00efa877","55155826bc466623002afe83","551558324c7c1e39003735a0","56052058e266000d008971c7","57909a453b845d0e006a37d5"],"_id":"547cd7662eaee50800ed108c","createdAt":"2014-12-01T21:02:30.851Z","project":"547cd7662eaee50800ed1089","releaseDate":"2014-12-01T21:02:30.851Z","__v":9},"githubsync":""}