You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

290 lines
11 KiB

//
// OfficialAccountPushSwitch.m
// tongxin
//
// Created by Apple on 2019/1/21.
// Copyright © 2019年 xTT. All rights reserved.
//
#import "OfficialAccountPushSwitch.h"
#import <Photos/Photos.h>
#import <WXApi.h>
//#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){
[SVProgressHUD showInfoWithStatus:@"微信通知已开启,无需重复开启"];
[SVProgressHUD dismissWithDelay:1];
}else{
[cUser setGZHSwitchStatus:@(1) Success:^(id responseObject) {
[SVProgressHUD showSuccessWithStatus:@"开启成功"];
[SVProgressHUD dismissWithDelay:1];
} 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