// // ModelRootViewController.m // model // // Created by JuYi on 2018/7/20. // Copyright © 2018年 Mine. All rights reserved. // #import "ModelRootViewController.h" #import "ModelNavigationController.h" #import "PublishViewController.h" #import "PrivateSpaceViewController.h" #import "MessageListViewController.h" #import "AppDelegate.h" #import "MineNewViewController.h" #import "UpdateViewController.h" #import "AdViewController.h" #import "WebViewController.h" @interface ModelRootViewController () @property(nonatomic, assign) NSInteger sessionUnreadCount; @property(nonatomic, assign) BOOL showAd; @end @implementation ModelRootViewController { ActorModel *model; } + (instancetype)instance { AppDelegate *delegete = (AppDelegate *) [UIApplication sharedApplication].delegate; UIViewController *vc = delegete.window.rootViewController; if ([vc isKindOfClass:[ModelRootViewController class]]) { return (ModelRootViewController *) vc; } else { return nil; } } - (void)viewDidLoad { [super viewDidLoad]; [self changeLoginState]; [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; [[NIMSDK sharedSDK].conversationManager addDelegate:self]; [self setupViewController:[[MessageListViewController alloc] init] andTag:0 andTitle:@"消息" andSelectImg:@"xiaoxi2" andImg:@"xiaoxi1"]; [self setupViewController:[[PrivateSpaceViewController alloc] init] andTag:1 andTitle:@"" andSelectImg:@"faxian" andImg:@"faxian"]; [self setupViewController:[[MineNewViewController alloc] init] andTag:2 andTitle:@"我的" andSelectImg:@"wode2" andImg:@"wode1"]; self.selectedIndex = 2; self.showAd = YES; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self checkUpdate]; } #pragma mark - appUpdate - (void)checkUpdate { [YanCNetWorkManager requestPostWithURLStr:Url_checkUpdate(PublicUrl) parameters:nil finish:^(id dataDic) { if ([@"success" isEqualToString:dataDic[@"msg"]]) { NSDictionary *data = dataDic[@"data"]; int currentVersion = [self versionExchangeType:[self getSystemVersion]]; int latestVersion = [self versionExchangeType:data[@"ios"][@"model"][@"version"]]; if (currentVersion < latestVersion) { UpdateViewController *updateViewController = [[UpdateViewController alloc] init]; updateViewController.version = data[@"ios"][@"member"][@"version"]; updateViewController.desc = data[@"ios"][@"member"][@"desc"]; [self presentViewController:updateViewController animated:YES completion:nil]; return; } } [self getTopActivity]; } enError:^(NSError *error) { [self getTopActivity]; }]; } - (NSString *)getSystemVersion { NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary]; NSString *currentVersion = infoDic[@"CFBundleShortVersionString"]; return currentVersion; } - (int)versionExchangeType:(NSString *)version { NSArray *subArr = [version componentsSeparatedByString:@"."]; if (subArr.count > 0) { NSString *value = @""; for (int i = 0; i < subArr.count; i++) { value = [value stringByAppendingString:subArr[i]]; } return value.intValue; } else { return 0; } } - (void)getTopActivity { if (self.showAd) { self.showAd = NO; [[AHHttpManager sharedManager] POST:[NSString stringWithFormat:@"%@/activity?action=dogettoppartty", PublicUrl] parameters:nil success:^(id responseObject) { if ([[responseObject objectForKey:@"msg"] isEqualToString:@"success"]) { NSArray *data = responseObject[@"data"]; for (NSUInteger i = 0; i < data.count; ++i) { long beg = MIN([data[i][@"SBeg"] longValue], [data[i][@"Beg"] longValue]); long end = MAX([data[i][@"Sendt"] longValue], [data[i][@"Endt"] longValue]); NSDate *date = [NSDate dateWithTimeIntervalSinceNow:0]; NSTimeInterval time = [date timeIntervalSince1970] * 1000; if (time >= beg && time <= end) { AdViewController *adViewController = [[AdViewController alloc] init]; adViewController.model = data[i]; adViewController.callback = ^(void) { WebViewController *webVC = [[WebViewController alloc] init]; webVC.url = data[i][@"url"]; webVC.activityPK = data[i][@"PK"]; webVC.hidesBottomBarWhenPushed = YES; [(UINavigationController *) self.selectedViewController pushViewController:webVC animated:YES]; }; [self presentViewController:adViewController animated:YES completion:nil]; return; } } } } failure:^(NSError *error) { NSLog(@"error = %@", error); }]; } } - (void)setupViewController:(UIViewController *)controller andTag:(NSInteger)tag andTitle:(NSString *)title andSelectImg:(NSString *)selectImg andImg:(NSString *)img { NSInteger count = [[[NIMSDK sharedSDK] conversationManager] allUnreadCount]; self.sessionUnreadCount = [NIMSDK sharedSDK].conversationManager.allUnreadCount; ModelNavigationController *nav = [[ModelNavigationController alloc] initWithRootViewController:controller]; if ([title isEqualToString:@"消息"]) { nav.tabBarItem.badgeValue = count ? [NSString stringWithFormat:@"%ld", count] : nil; } nav.tabBarItem.tag = tag; nav.tabBarItem.title = title; [nav.tabBarItem setImage:[[UIImage imageNamed:img] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [nav.tabBarItem setSelectedImage:[[UIImage imageNamed:selectImg] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; self.tabBar.tintColor = [UIColor colorWithHexString:@"#fe407f"]; self.tabBar.barTintColor = [UIColor whiteColor]; [self addChildViewController:nav]; } - (void)tcpConnectStateChange { NSInteger count = [[[NIMSDK sharedSDK] conversationManager] allUnreadCount]; self.tabBar.items[0].badgeValue = count ? [NSString stringWithFormat:@"%ld", count] : nil; } - (void)changeLoginState { NSString *str = [NSString stringWithFormat:@"%@modelInfo?action=doPutOnline&modelpk=%@&online=1", imageURl, [ModelUser user].modelpk]; [[AHHttpManager sharedManager] POST:str parameters:nil success:^(id responseObject) { NSLog(@"%@", responseObject); if ([[responseObject objectForKey:@"msg"] isEqualToString:@"success"]) { } else { } } failure:^(NSError *error) { NSLog(@"error = %@", error); }]; } #pragma mark - NIMConversationManagerDelegate - (void)didAddRecentSession:(NIMRecentSession *)recentSession totalUnreadCount:(NSInteger)totalUnreadCount { self.sessionUnreadCount = totalUnreadCount; [self refreshSessionBadge]; } - (void)didUpdateRecentSession:(NIMRecentSession *)recentSession totalUnreadCount:(NSInteger)totalUnreadCount { self.sessionUnreadCount = totalUnreadCount; [self refreshSessionBadge]; } - (void)refreshSessionBadge { // UINavigationController *nav = self.viewControllers[NTESMainTabTypeMessageList]; self.tabBar.items[0].badgeValue = self.sessionUnreadCount ? @(self.sessionUnreadCount).stringValue : nil; } - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { if ([tabBar.items indexOfObject:item] == 1) { PrivateSpaceViewController *pvc = [[PrivateSpaceViewController alloc] init]; [self.navigationController pushViewController:pvc animated:YES]; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end