ad localnoti background music
This commit is contained in:
@@ -12,29 +12,74 @@
|
||||
#import "UserGuardViewController.h"
|
||||
#import "GiGaUserDefault.h"
|
||||
#import "GiGaAppGaurdVC.h"
|
||||
#import "UIView+Toast.h"
|
||||
#import "GiGaMeViewController.h"
|
||||
#import "GiGaAdDetailViewController.h"
|
||||
#import "GiGaMasssagesVC.h"
|
||||
#import "Masonry.h"
|
||||
#import "GiGaQuestionVC.h"
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#import "GiGaLocalNotificationManager.h"
|
||||
#import "AppDelegate.h"
|
||||
#import "LXCountTimer.h"
|
||||
#import "GiGaHelper.h"
|
||||
#import <MediaPlayer/MediaPlayer.h>
|
||||
|
||||
@interface GiGaMaskTaskViewController ()
|
||||
{
|
||||
AVAudioPlayer *_musicPalyer;
|
||||
}
|
||||
@property(nonatomic,strong)MaskViewBootomWaringView *waringView;
|
||||
@property(nonatomic,strong)UILabel *countLabel;
|
||||
@property (strong ,nonatomic) LXCountTimer *timer;
|
||||
|
||||
@end
|
||||
|
||||
@implementation GiGaMaskTaskViewController
|
||||
|
||||
-(UILabel *)countLabel{
|
||||
if (!_countLabel) {
|
||||
_countLabel = [[UILabel alloc] init];
|
||||
_countLabel.textColor = [UIColor redColor];
|
||||
_countLabel.text = @"30:00";
|
||||
_countLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _countLabel;
|
||||
|
||||
}
|
||||
|
||||
-(LXCountTimer *)timer{
|
||||
|
||||
if (!_timer) {
|
||||
_timer = [[LXCountTimer alloc] init];
|
||||
}
|
||||
return _timer;
|
||||
}
|
||||
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
[super viewWillAppear:animated];
|
||||
[self startMaskTime];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
[self setUpNav];
|
||||
[self initUI];
|
||||
[self addNotify];
|
||||
[self creatBackGroundMusic];
|
||||
}
|
||||
|
||||
-(void)initUI{
|
||||
|
||||
[self.view addSubview:self.countLabel];
|
||||
|
||||
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.view.mas_top).offset(200);
|
||||
make.width.mas_equalTo(100);
|
||||
make.height.mas_equalTo(30);
|
||||
make.centerX.mas_equalTo(self.view.mas_centerX);
|
||||
|
||||
}];
|
||||
|
||||
UIButton *testBtn = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[testBtn setTitle:@"测试肤质" forState:UIControlStateNormal];
|
||||
[testBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||
@@ -50,12 +95,106 @@
|
||||
make.height.mas_equalTo(40);
|
||||
make.bottom.mas_equalTo(self.view.mas_bottom).offset(-200);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark 开始计时
|
||||
|
||||
-(void)countTimeBegain:(NSUInteger)hour minute:(NSUInteger)minute second:(NSUInteger)second{
|
||||
|
||||
long nowTimestamp = [GiGaHelper getNowDateTimestamp];
|
||||
long futrueTimestamp = [GiGaHelper getFutureTimetstamp:hour minute:minute second:second];
|
||||
weakify(self);
|
||||
[self.timer countDownWithStratTimeStamp:nowTimestamp finishTimeStamp:futrueTimestamp completeBlock:^(NSInteger day, NSInteger hour, NSInteger minute, NSInteger second) {
|
||||
[weakSelf refreshTimeCount:hour minute:minute second:second];
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)refreshTimeCount:(NSInteger)hour minute:(NSInteger)minute second:(NSInteger)second{
|
||||
|
||||
self.countLabel.text = [NSString stringWithFormat:@"%02ld:%02ld",minute,second];
|
||||
if (hour == 0 && minute == 0 && second == 0) {
|
||||
//面膜结束
|
||||
[self maskTimeEnd];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark 面膜时间背景音乐
|
||||
-(void)creatBackGroundMusic{
|
||||
|
||||
//设置后台模式和锁屏模式下依然能够播放
|
||||
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
|
||||
[[AVAudioSession sharedInstance] setActive:YES error:nil];
|
||||
//初始化音频播放器
|
||||
NSError *payerError;
|
||||
NSURL *musicUrl = [[NSURL alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"pomodoSound" ofType:@"m4a"]] ;
|
||||
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:musicUrl error:&payerError];
|
||||
player.numberOfLoops = -1;
|
||||
_musicPalyer = player;
|
||||
|
||||
}
|
||||
|
||||
#pragma mark 开始面膜时间
|
||||
-(void)startMaskTime{
|
||||
|
||||
AppDelegate *delegate =(AppDelegate *) [[UIApplication sharedApplication] delegate];
|
||||
delegate.isMasking = YES;
|
||||
[_musicPalyer play];
|
||||
|
||||
[self setBackGroundPlayingInfo];
|
||||
|
||||
//总时间隔 s
|
||||
NSTimeInterval timeInterVal = 10;
|
||||
|
||||
NSString *timeformat = [GiGaHelper stringWithNSTimerinterval:timeInterVal];
|
||||
NSArray *timesArr = [timeformat componentsSeparatedByString:@":"];
|
||||
NSString *hour = timesArr[0];
|
||||
NSString *min = timesArr[1];
|
||||
NSString *sec = timesArr[2];
|
||||
[self countTimeBegain:hour.integerValue minute:min.integerValue second:sec.integerValue];
|
||||
|
||||
[self showWaringView];
|
||||
|
||||
//app 前台时收到本地通知showAlert 后台时通知提醒
|
||||
[[GiGaLocalNotificationManager localNotifiationCenter] sendLocalNotification:@"本地推送" fireTimeInterval:timeInterVal alertAction:@"测试面膜时间" withIdentifier:kLOCALNotifiID_MASKETIMEEND];
|
||||
|
||||
}
|
||||
|
||||
#pragma mark 设置后台锁屏样式 无效??
|
||||
|
||||
-(void)setBackGroundPlayingInfo{
|
||||
|
||||
MPMediaItemArtwork *arwork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"MaskTime.png"]];
|
||||
NSDictionary *dic = @{
|
||||
MPMediaItemPropertyTitle:@"专辑名字专辑",
|
||||
MPMediaItemPropertyAlbumArtist:@"专辑专辑专辑专辑",
|
||||
MPMediaItemPropertyArtwork:arwork
|
||||
};
|
||||
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dic];
|
||||
|
||||
}
|
||||
|
||||
#pragma mark 面膜时间结束
|
||||
-(void)maskTimeEnd{
|
||||
|
||||
//面膜时间结束时设置 全局变量 不再发送本地通知 提醒
|
||||
AppDelegate *delegate =(AppDelegate *) [[UIApplication sharedApplication] delegate];
|
||||
delegate.isMasking = NO;
|
||||
[_musicPalyer stop];
|
||||
[self.timer destoryTimer];
|
||||
|
||||
}
|
||||
|
||||
#pragma mark 开始测试
|
||||
-(void)testBtnAcion:(UIButton *)btn{
|
||||
|
||||
AppDelegate *delegate =(AppDelegate *) [[UIApplication sharedApplication] delegate];
|
||||
if (delegate.isMasking) {
|
||||
return;
|
||||
}
|
||||
[self startMaskTime];
|
||||
|
||||
return ;
|
||||
|
||||
BOOL isUserLogin = [GiGaUserDefault isUserLogin];
|
||||
if (isUserLogin) {
|
||||
|
||||
@@ -68,7 +207,6 @@
|
||||
GiGaBaseNavViewController *baseNav = [[GiGaBaseNavViewController alloc] initWithRootViewController:userlogInVC];
|
||||
[self presentViewController:baseNav animated:YES completion:nil];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-(void)viewDidAppear:(BOOL)animated{
|
||||
@@ -173,7 +311,6 @@
|
||||
}
|
||||
|
||||
#pragma mark 个人中心 action
|
||||
|
||||
-(void)rightBtnAction{
|
||||
|
||||
}
|
||||
@@ -198,11 +335,6 @@
|
||||
} for:UIControlEventTouchUpInside ];
|
||||
}
|
||||
|
||||
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
|
||||
{
|
||||
[self showWaringView];
|
||||
}
|
||||
|
||||
- (MaskViewBootomWaringView *)waringView{
|
||||
|
||||
if (!_waringView) {
|
||||
@@ -216,14 +348,6 @@
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
|
||||
/*
|
||||
#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
|
||||
|
||||
Reference in New Issue
Block a user