// // OfficialAccountPushSwitch.m // tongxin // // Created by Apple on 2019/1/21. // Copyright © 2019年 xTT. All rights reserved. // #import "OfficialAccountPushSwitch.h" #import #import //#import "WXApiObject.h" #import "WechatAuthSDK.h" #import "EditMeViewController.h" @interface OfficialAccountPushSwitch () @end @implementation OfficialAccountPushSwitch -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //隐藏导航栏 self.navigationController.navigationBarHidden = YES; [self loadData]; } -(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; //显示导航栏 self.navigationController.navigationBarHidden = NO; [self StopShakeWithBtn:self.openNotificationBtn]; } /** 获取此账号的 公众号是否关注,是否开启推送等信息 */ -(void)loadData{ WEAKSELF [cUser getUserInfoSuccess:^(id responseObject) { if(cUser.status.intValue == 2){ //没有关注公众号 [weakSelf shakeToShow:self.openNotificationBtn]; }else{ [weakSelf StopShakeWithBtn:self.openNotificationBtn]; } } failure:nil]; } //MARK: 按钮动画抖动 -(void)shakeToShow:(UIButton *)button{ CAKeyframeAnimation* keyAnima = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"]; // animation.duration = 0.5; // animation.repeatCount = 0; //2, 告诉系统执行什么动画。 keyAnima.values = @[@(-M_PI_4 /90.0 * 5),@(M_PI_4 /90.0 * 5),@(-M_PI_4 /90.0 * 5)]; //  3, 执行完之后不删除动画 keyAnima.removedOnCompletion = NO; // 4, 执行完之后保存最新的状态 keyAnima.fillMode = kCAFillModeForwards; // 5, 动画执行时间 keyAnima.duration = 0.2; // 6, 设置重复次数。 keyAnima.repeatCount = MAXFLOAT; // NSMutableArray *values = [NSMutableArray array]; // // [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]]; // // [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.2, 1.2, 1.0)]]; // // [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9, 0.9, 1.0)]]; // // [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)]]; // // keyAnima.values = values; [button.layer addAnimation:keyAnima forKey:@"ButtonShake"]; } //MARK: 按钮动画停止抖动 - (void)StopShakeWithBtn:(UIButton*)button{ [button.layer removeAnimationForKey:@"ButtonShake"]; } - (void)viewDidLoad { [super viewDidLoad]; WEAKSELF //MARK: 灭屏后亮屏会 通知 [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { [weakSelf loadData]; }]; //判断性别 NSString *sexImageName ; if([cUser.cDevice.sex isEqualToString:@"girl"]){ //女 sexImageName = @"icon_girl_head_portrait_1"; }else{ //男 sexImageName = @"icon_boy_head_portrait_1"; } [self.headImageView sd_setImageWithURL:[NSURL URLWithString:cUser.cDevice.avator] placeholderImage:[myHelper getImageWithName:sexImageName]]; self.headImageView.layer.cornerRadius = self.headImageView.frame.size.width/2; self.headImageView.layer.masksToBounds = YES; self.nameLabel.text = cUser.cDevice.name; self.openNotificationBtn.layer.cornerRadius = 4; self.openNotificationBtn.backgroundColor = mainColor; [self.openNotificationBtn setTitleColor:[UIColor whiteColor] forState:0]; } - (IBAction)leftBtn:(id)sender { [self goBack:nil]; } //MARK: 跳转 开关设置页面 - (IBAction)setUpBtnAction:(id)sender { UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; UIViewController *vc =[sb instantiateViewControllerWithIdentifier:@"OffcialAccountSettingVC"]; [self.navigationController pushViewController:vc animated:YES]; } /** 打开通知 */ - (IBAction)openNotificationAction:(id)sender { WEAKSELF if(cUser.status.intValue == 2){ //未关注公众号 //首先判断是否是 微信登录 或者是 手机号登录绑定微信 if( [myHelper getNowAccoutType:cUser] == 2 || (cUser.account_status.intValue == 1 && cUser.wx_status.intValue == 1) ){ // 已经具备条件了 // 关注微信公众号,你将可以在微信收到宝贝的消息,是否前往关注? LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:@"关注微信公众号【童信汇】,你将可以在微信收到宝贝的消息,是否前往关注?" style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { //去截图 跳转 微信 [weakSelf saveImageView:self.view]; } cancelHandler:nil destructiveHandler:nil]; alertView.cancelOnTouch = NO; [alertView showAnimated:YES completionHandler:nil]; }else{ // 当前账号未绑定微信,是否前往绑定? LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:@"当前账号未绑定微信,是否前往绑定?" style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { //跳转用户资料页面 ---> 提示,绑定微信页面 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; EditMeViewController *vc =[sb instantiateViewControllerWithIdentifier:@"EditMeViewController"]; vc.willLoadBlack = ^{ LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:@"请绑定微信,并关注微信公众号【童信汇】" style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { } cancelHandler:nil destructiveHandler:nil]; alertView.cancelOnTouch = NO; [alertView showAnimated:YES completionHandler:nil]; }; [weakSelf.navigationController pushViewController:vc animated:YES]; } cancelHandler:nil destructiveHandler:nil]; alertView.cancelOnTouch = NO; [alertView showAnimated:YES completionHandler:nil]; } }else{ //如果是已经关注微信公众号,但已将通知关闭,点击“开启通知”按钮,将通知状态打开,并提示“开启成功 if(cUser.status.intValue == 1){ [UICommon MessageErrorText:@"微信通知已开启,无需重复开启"]; }else{ [cUser setGZHSwitchStatus:@(1) Success:^(id responseObject) { [UICommon MessageSuccessText:@"开启成功" isImg:YES]; } failure:^(id faiObject) { }]; } } } //截屏分享 传入想截屏的view(也可以是controller webview只能截当前屏幕-_-`,用其他的方法) -(void)saveImageView:(UIView*)view{ UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0); CGContextRef ctx = UIGraphicsGetCurrentContext(); [view.layer renderInContext:ctx]; // 这个是要分享图片的样式(自定义的) UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext(); //保存到本地相机 UIImageWriteToSavedPhotosAlbum(newImage,self,@selector(image:didFinishSavingWithError:contextInfo:),nil); } - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{ if(error){ xLog(@"error: %@",error.description); if(PHPhotoLibrary.authorizationStatus != PHAuthorizationStatusAuthorized){ //可能是没有权限 LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:[NSString stringWithFormat:@"请为%@打开相机权限",APPName] style:LGAlertViewStyleAlert buttonTitles:@[@"前往设置"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; } cancelHandler:nil destructiveHandler:nil]; alertView.cancelOnTouch = NO; [alertView showAnimated:YES completionHandler:nil]; } }else{ xLog(@"截屏保存成功"); LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:@"截图保存至相册成功,微信使用\"扫一扫\",右上角相册选择截图,扫描截图并关注公众号即可开启通知" style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { [self openScheme:@"weixin://"]; } cancelHandler:nil destructiveHandler:nil]; alertView.cancelOnTouch = NO; [alertView showAnimated:YES completionHandler:nil]; } } - (void)openScheme:(NSString *)scheme { UIApplication *application = [UIApplication sharedApplication]; NSURL *URL = [NSURL URLWithString:scheme]; //iOS 10 以后 if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) { //1 如果这个要打开的URL有效,并且在应用中配置它布尔值为true(YES)时才可以打开,否则打不开 // NSDictionary *options = @{UIApplicationOpenURLOptionUniversalLinksOnly : @YES}; //2 此时与openURL功能相似 NSDictionary *options =@{}; [application openURL:URL options:options completionHandler:^(BOOL success) { NSLog(@"Open %@: %d",scheme,success); }]; } else { if ([application canOpenURL:URL]) { BOOL success = [application openURL:URL]; NSLog(@"Open %@: %d",scheme,success); } } } -(void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; //移除亮灭屏通知 } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end