HomeViewController.m
8.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
//
// HomeViewController.m
// DreamSleep
//
// Created by peter on 2022/4/1.
//
#import "HomeViewController.h"
#import "DSHomeView.h"
#import "RescuePlanView.h"
#import "FirstLeadAlertView.h"
#import "UserRequestModel.h"
#import "HomeRequestModel.h"
#import "ThreeMinuteController.h"
#import "SafeSleepRequestModel.h"
#import "WhiteNoiseRequestModel.h"
#import "NoisePlayBar.h"
#import "NoiseDataManager.h"
@interface HomeViewController ()
@property (nonatomic, strong) DSHomeView *homeTV;
@property (nonatomic, strong) RescuePlanView *rescuePlanView;
@property (nonatomic, strong) NoisePlayBar *noisePlayBar;
@end
@implementation HomeViewController
- (void)viewDidLoad {
[super viewDidLoad];
// leftItem
UILabel *leftLab = [UILabel dkLabWithText:@"小梦睡眠" font:BoldFont(24.0)];
UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:leftLab];
self.navigationItem.leftBarButtonItem = leftItem;
[self.view addSubview:self.homeTV];
[self.view addSubview:self.noisePlayBar];
[self.noisePlayBar mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view).offset(15);
make.right.equalTo(self.view).offset(-15);
make.bottom.equalTo(self.view).offset(-15);
make.height.equalTo(@50);
}];
self.edgesForExtendedLayout = UIRectEdgeNone;
if ([LoginUtils getUserLoginData]) {
// 自动登录请求(调用时机)
[UserRequestModel autoLoginRequestWithCompletion:^(UserRequestModel * _Nonnull requestModel) {}];
}
// 活动运营弹框(首次启动不弹框,后面每隔24个小时请求后台接口)
[self promotionAlert];
// APP首次启动弹框(只出现一次)
[self showFirstLeadAlertView];
[self requestHomeData];
// 监听主页需要刷新数据通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(needUpdate) name:NeedUpdateHomePage object:nil];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[[NoiseDataManager sharedNoiseDataManager] stopNoiseAudio];
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:NeedUpdateHomePage object:nil];
}
- (void)needUpdate {
[self.homeTV.mj_header beginRefreshing];
}
#pragma mark - banner、舒眠课程、助眠音乐数据获取
- (void)requestHomeData {
self.homeTV.mj_header = [DSGifHeader headerWithRefreshingBlock:^{
// 获取首页banner数据
[HomeRequestModel queryBannerListWithCompletion:^(HomeRequestModel * _Nonnull requestModel) {
[self.homeTV.mj_header endRefreshing];
if (requestModel.resCode == DSResCodeSuccess) {
[self.homeTV refreshBarnner:requestModel.bannerListData];
}
}];
// 获取首页舒眠课程数据
[SafeSleepRequestModel getCourseListDataWithSubID:6 isHome:YES completion:^(SafeSleepRequestModel * _Nonnull requestModel) {
[self.homeTV.mj_header endRefreshing];
if (requestModel.resCode == DSResCodeSuccess) {
[self.homeTV updateCourseMusicCell:CellTypeCourse data:requestModel.courseListData];
}
}];
// 获取首页助眠音乐数据
[SafeSleepRequestModel getCourseListDataWithSubID:18 isHome:YES completion:^(SafeSleepRequestModel * _Nonnull requestModel) {
[self.homeTV.mj_header endRefreshing];
if (requestModel.resCode == DSResCodeSuccess) {
[self.homeTV updateCourseMusicCell:CellTypeMusic data:requestModel.courseListData];
}
}];
// 获取白噪音类型请求
[WhiteNoiseRequestModel queryRelaxWhiteNoiseTypeWithCompletion:^(WhiteNoiseRequestModel * _Nonnull requestModel) {
[self.homeTV.mj_header endRefreshing];
if (requestModel.resCode == DSResCodeSuccess) {
[self.homeTV updateNoiseAllTypeData:requestModel.noiseTypeArr];
}
}];
}];
[self.homeTV.mj_header beginRefreshing];
}
#pragma mark - APP首次启动弹框
- (void)showFirstLeadAlertView {
if (kGetUserDefaultsBOOL(IsFirstAlert)) { return; }
FirstLeadAlertView *view = [[FirstLeadAlertView alloc] initWithJumpBlock:^(JumpType type) {
if (type == JumpTypeAI) {
// 切换到AI睡眠教练标签
self.tabBarController.selectedIndex = 1;
} else {
// 进入快速入眠页面(首页)
self.tabBarController.selectedIndex = 0;
}
}];
[view show];
}
#pragma mark - 运营活动相关
- (void)promotionAlert {
if (kGetUserDefaultsBOOL(IsFirstAlert) == NO) {
return;
}
if ([[NSFileManager defaultManager] fileExistsAtPath:kPromotionTime isDirectory:nil]) {
// 缓存文件最近修改日期
NSDictionary *fileURLAttributes = [[NSURL fileURLWithPath:kPromotionTime] resourceValuesForKeys:[NSArray arrayWithObjects:NSURLContentModificationDateKey, nil] error:nil];
NSDate *lastModifiedDate = [fileURLAttributes objectForKey:NSURLContentModificationDateKey];
// 活动更新时效24小时
NSInteger updateTime = 60 * 60 * 24;
NSDate *expirationDate = [NSDate dateWithTimeIntervalSinceNow:-updateTime];
NSComparisonResult result = [expirationDate compare:lastModifiedDate];
// 运营活动弹框时机(每天调用1次)
if (result == NSOrderedDescending) {
[self queryPromotionImageRequest];
}
} else {
[self queryPromotionImageRequest];
}
}
- (void)queryPromotionImageRequest {
[HomeRequestModel queryPromotionImageWithCompletion:^(HomeRequestModel * _Nonnull requestModel) {
if (requestModel.resCode == DSResCodeSuccess) {
PromotionModel *pModel = requestModel.promotionModel;
if (pModel) { [self showRescuePlanView:pModel]; }
}
}];
}
- (void)showRescuePlanView:(PromotionModel *)pModel {
RescuePlanView *rescuePlanView = [[RescuePlanView alloc] initWithJumpBlock:^{
if (pModel.login_flag == 1) { // 需要用户登录才可以点击进入相应界面
// 判断是否登录成功
if ([LoginUtils getUserLoginData]) {
[self jumpToActiveInterface:pModel];
} else {
// 跳转到登录页面
[LoginUtils jumpToLoginControllerWithTarget:self];
}
} else { // 不需要登录也可以进入相应界面
[self jumpToActiveInterface:pModel];
}
} imageUrl:pModel.image_url];
self.rescuePlanView = rescuePlanView;
[self.rescuePlanView show];
}
- (void)jumpToActiveInterface:(PromotionModel *)pModel {
[self.rescuePlanView dismiss];
WS(weakSelf);
BOOL isNative = [pModel.page_url containsString:@"native"];
// 跳转到原生页面
if (isNative) {
int type = [[[pModel.page_url componentsSeparatedByString:@"type="] lastObject] intValue];
if (type == 1) { // AI睡眠教练
// 切换到AI睡眠教练标签
self.tabBarController.selectedIndex = 1;
} else if (type == 2) { // 首页
self.tabBarController.selectedIndex = 0;
} else if (type == 3) { // 哄睡页面(未登录就可以进去)
ThreeMinuteController *threeVC = [[ThreeMinuteController alloc] init];
[self.navigationController pushViewController:threeVC animated:YES];
}
} else {
// 跳转到H5页面
[weakSelf.navigationController pushViewController:[[DsWebController alloc] initWithTitle:pModel.title link:pModel.page_url] animated:YES];
}
}
#pragma mark - 导航栏日间、黑夜模式
- (NaviStyle)navigationBarStyle {
return [self.dk_manager.themeVersion isEqualToString:DKThemeVersionNormal] ? NaviStyleLight : NaviStyleDark;
}
#pragma mark - lazy
- (DSHomeView *)homeTV {
if (!_homeTV) {
_homeTV = [[DSHomeView alloc] init];
_homeTV.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
return _homeTV;
}
- (NoisePlayBar *)noisePlayBar {
if (!_noisePlayBar) {
_noisePlayBar = [NoisePlayBar new];
}
return _noisePlayBar;
}
@end