feedback_ios_demo/YWFeedbackDemo/YWLoginController.m (153 lines of code) (raw):

// // YWLoginController.m // YWFeedbackDemo // // Created by 慕桥(黄玉坤) on 16/1/21. // Copyright (c) 2016年 alibaba. All rights reserved. // #import "YWLoginController.h" #import "TWMessageBarManager.h" #import "AVQRViewController.h" #import <BCHybridWebViewFMWK/BCHybridWebView.h> #import "UIButton+Badge.h" #import <YWFeedbackFMWK/YWFeedbackKit.h> #import <YWFeedbackFMWK/YWFeedbackViewController.h> #warning 修改为你自己的 appkey 和 appSecret。 static NSString * const kAppKey = @"******"; static NSString * const kAppSecret = @"******"; @interface YWLoginController()<UIActionSheetDelegate> @property (weak, nonatomic) IBOutlet UITextView *textView; @property (weak, nonatomic) IBOutlet UIButton *buttonLogin; @property (weak, nonatomic) IBOutlet UIButton *buttonUnread; @property (weak, nonatomic) IBOutlet UIButton *buttonScanCode; @property (weak, nonatomic) IBOutlet UIButton *buttonUnreadTitle; @property (weak, nonatomic) IBOutlet UIButton *buttonScanCodeTitle; @property (weak, nonatomic) IBOutlet UILabel *appkeyLabel; @end /// for iPad @interface YWLoginController ()<UISplitViewControllerDelegate> @property (nonatomic, strong) YWFeedbackKit *feedbackKit; @end @implementation YWLoginController #pragma mark - life circle - (void)viewDidLoad { [super viewDidLoad]; self.textView.text = [NSString stringWithFormat:@"Appkey: %@", kAppKey]; } #pragma mark - methods /** 打开用户反馈页面 */ - (void)openFeedbackViewController { /** 设置App自定义扩展反馈数据 */ // self.feedbackKit.extInfo = @{@"loginTime":[[NSDate date] description], // @"visitPath":@"登录->关于->反馈", // @"userid":@"yourid", // @"应用自定义扩展信息":@"开发者可以根据需要设置不同的自定义信息,方便在反馈系统中查看"}; // demo这里根据设置页的设置,如果有开启自定义拓展反馈数据,就传 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSDictionary *setting = [defaults objectForKey:@"YWSettingInfo"]; if (setting) { // 根据设置 配置自定义拓展信息 if (setting[@"customSwitch"] && [setting[@"customSwitch"] boolValue]) { self.feedbackKit.extInfo = @{ @"应用自定义扩展信息":@"开发者可以根据需要设置不同的自定义信息,方便在反馈系统中查看", @"userId":@"111" }; } else { self.feedbackKit.extInfo = nil; } // 根据设置 配置用户昵称 if (setting[@"userName"]) { [self.feedbackKit setUserNick:[NSString stringWithFormat:@"%@",setting[@"userName"]]]; } else { [self.feedbackKit setUserNick:nil]; } // 根据设置 配置导航栏按键字体大小 if (setting[@"font"] && [setting[@"font"] length] != 0) { self.feedbackKit.defaultCloseButtonTitleFont = [UIFont systemFontOfSize:[setting[@"font"] floatValue]]; self.feedbackKit.defaultRightBarButtonItemTitleFont = [UIFont systemFontOfSize:[setting[@"font"] floatValue]]; } else { self.feedbackKit.defaultCloseButtonTitleFont = nil; self.feedbackKit.defaultRightBarButtonItemTitleFont = nil; } // 根据设置 配置自定义错误提示 if (setting[@"errorSwitch"] && [setting[@"errorSwitch"] boolValue]) { /** 使用自定义的方式抛出error */ [self.feedbackKit setYWFeedbackViewControllerErrorBlock:^(YWFeedbackViewController *viewController, NSError *error) { NSString *title = [error.userInfo objectForKey:@"msg"]?:@"接口调用失败,请保持网络通畅!"; [[TWMessageBarManager sharedInstance] showMessageWithTitle:title description:[NSString stringWithFormat:@"%ld", error.code] type:TWMessageBarMessageTypeError]; }]; } else { self.feedbackKit.YWFeedbackViewControllerErrorBlock = nil; } } __weak typeof(self) weakSelf = self; [self.feedbackKit makeFeedbackViewControllerWithCompletionBlock:^(YWFeedbackViewController *viewController, NSError *error) { if (viewController != nil) { UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewController]; [weakSelf presentViewController:nav animated:YES completion:nil]; [viewController setCloseBlock:^(UIViewController *aParentController){ [aParentController dismissViewControllerAnimated:YES completion:nil]; }]; } else { /** 使用自定义的方式抛出error时,此部分可以注释掉 */ NSString *title = [error.userInfo objectForKey:@"msg"]?:@"接口调用失败,请保持网络通畅!"; [[TWMessageBarManager sharedInstance] showMessageWithTitle:title description:nil type:TWMessageBarMessageTypeError]; } }]; } /** 查询未读数 */ - (void)fetchUnreadCount { __weak typeof(self) weakSelf = self; [self.feedbackKit getUnreadCountWithCompletionBlock:^(NSInteger unreadCount, NSError *error) { NSString *title; if (error == nil) { NSString *desc = [NSString stringWithFormat:@"未读数:%ld", (long)unreadCount]; weakSelf.buttonUnread.shouldHideBadgeAtZero = NO; weakSelf.buttonUnread.badgeValue = [NSString stringWithFormat:@"%ld", (long)unreadCount]; title = [NSString stringWithFormat: @"成功获取未读数!\n %@", desc]; [[TWMessageBarManager sharedInstance] showMessageWithTitle:@"成功获取未读数!" description:desc type:TWMessageBarMessageTypeSuccess]; } else { title = [error.userInfo objectForKey:@"msg"]?:@"接口调用失败,请保持网络通畅!"; [[TWMessageBarManager sharedInstance] showMessageWithTitle:title description:nil type:TWMessageBarMessageTypeError]; } self.textView.text = title; }]; } #pragma mark getter - (YWFeedbackKit *)feedbackKit { if (!_feedbackKit) { // SDK初始化,手动配置appKey/appSecret _feedbackKit = [[YWFeedbackKit alloc] initWithAppKey:kAppKey appSecret:kAppSecret]; } return _feedbackKit; } #pragma mark actions - (IBAction)actionStart:(id)sender { [self cleanTextView]; [self openFeedbackViewController]; } /** 扫码预览 */ - (IBAction)actionScanCode:(id)sender { [self cleanTextView]; AVQRViewController *vc = [[AVQRViewController alloc] init]; __weak typeof(vc) weakVC = vc; __weak typeof(self) weakSelf = self; vc.readFinishedBlock = ^(NSString *text){ [weakVC dismissViewControllerAnimated:YES completion:^{ NSDictionary *configration = @{ @"photoFromCancel" : @"拍摄照片", @"photoFromCamera" : @"相册选取", @"photoFromAlbum" : @"取消", }; YWFeedbackViewController *webVC = [[YWFeedbackViewController alloc] initWithFeedbackKit:self.feedbackKit extInfo:nil configration:configration]; webVC.closeBlock = ^(YWFeedbackViewController *feedbackController){ [feedbackController dismissViewControllerAnimated:YES completion:nil]; }; [webVC view]; [webVC.contentView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:text?:@""]]]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:webVC]; [weakSelf.navigationController presentViewController:nav animated:YES completion:nil]; }]; }; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]; [weakSelf.navigationController presentViewController:nav animated:YES completion:nil]; } - (IBAction)actionUnreadCount:(id)sender { [self cleanTextView]; [self fetchUnreadCount]; } - (void)cleanTextView { self.textView.text = [NSString stringWithFormat:@"Appkey: %@", kAppKey]; } - (IBAction)actionBackground:(id)sender { [self.view endEditing:YES]; } #pragma mark UISplitViewController delegate - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation NS_DEPRECATED_IOS(5_0, 8_0, "Use preferredDisplayMode instead") { return NO; } @end