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.
929 lines
40 KiB
929 lines
40 KiB
// |
|
// baseViewController.m |
|
// tianyin |
|
// |
|
// Created by xTT on 15/5/28. |
|
// Copyright (c) 2015年 xTT. All rights reserved. |
|
// |
|
|
|
|
|
#import "baseViewController.h" |
|
|
|
#import "AppDelegate.h" |
|
#import "MessageViewController.h" |
|
#import "CallViewController.h" |
|
//三个 消息页面 |
|
#import "AttentionMessageViewController.h" |
|
#import "SystermMessageViewController.h" |
|
#import "RemindMessageViewController.h" |
|
#import "RemoteCameraViewController.h" |
|
#import "WiFiListViewController.h" |
|
|
|
#import "MyMQTT.h" |
|
|
|
// 菊风视频 |
|
#import "JCManager.h" |
|
#import "BRManager.h" |
|
#import "TihuManager.h" |
|
|
|
/// 判断字符串是否有值 |
|
#define STRINGHASVALUE(str) (str && [str isKindOfClass:[NSString class]] && [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]].length > 0) |
|
|
|
@interface baseViewController ()<DZNEmptyDataSetSource,DZNEmptyDataSetDelegate> |
|
{ |
|
id popGestureRecognizerDelegate; |
|
|
|
UIImage *navBarImage; |
|
} |
|
|
|
|
|
@end |
|
|
|
@implementation baseViewController |
|
|
|
@synthesize myDataSource = _myDataSource; |
|
|
|
- (NSMutableArray *)myDataSource{ |
|
if (!_myDataSource) { |
|
_myDataSource = [[NSMutableArray alloc] init]; |
|
} |
|
return _myDataSource; |
|
} |
|
|
|
|
|
|
|
- (void)viewWillAppear:(BOOL)animated{ |
|
[super viewWillAppear:animated]; |
|
// self.zx_enableAdjustNavContainerAll = YES; |
|
self.additionalSafeAreaInsets = UIEdgeInsetsMake(44, 0, 0, 0); |
|
} |
|
|
|
- (void)viewDidLoad { |
|
// self.zx_enableAdjustNavContainerAll = YES; |
|
[super viewDidLoad]; |
|
// Do any additional setup after loading the view. |
|
self.zx_navLineView.hidden = YES; |
|
self.zx_navTitleFont = FontBold_(18); |
|
self.zx_disableAutoSetStatusBarStyle = YES; |
|
self.view.backgroundColor = KKBackgroundGrey; |
|
self.zx_navTintColor = KKTextBlackColor; |
|
self.zx_navBarBackgroundColor = KKWhiteColorColor; |
|
self.zx_backBtnImageName = @"icon_balck_return"; |
|
self.zx_disableNavAutoSafeLayout = YES; |
|
self.zx_navLeftBtn.zx_fixImageSize = ImageName_(@"icon_balck_return").size; |
|
self.zx_navItemSize = 40; |
|
self.zx_navRightBtn.zx_fixImageSize = CGSizeMake(44, 44); |
|
self.zx_navSubRightBtn.zx_fixImageSize = CGSizeMake(44, 44); |
|
[self.zx_navRightBtn setTitleColor:KKTextBlackColor forState:0]; |
|
//self.edgesForExtendedLayout = UIRectEdgeBottom; |
|
// self.zx_hideBaseNavBar = NO; |
|
// self.zx_navFixHeight = iPhoneX_NavHeight; |
|
|
|
|
|
WEAKSELF |
|
static BOOL isShow = NO; |
|
|
|
// [[NSNotificationCenter defaultCenter] addObserverForName:@"VideoCall" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { |
|
// |
|
// }]; |
|
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserverForName:AccountMessageNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { |
|
|
|
static SystemSoundID alarmSoundSysID = 0; |
|
//注册声音到系统声音 |
|
NSString *path = [[NSBundle mainBundle] pathForResource:@"alarm_sound" ofType:@"caf"]; |
|
if (path) { |
|
//注册声音到系统 |
|
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path],&alarmSoundSysID); |
|
} |
|
|
|
/* |
|
//lowBattery rail sms sos photograph abnormalBodyTemperature abnormalHeartRate 提醒消息 |
|
//applicationRrecord checkedResults 关注消息 |
|
//identityTransfer identityTransfered systemUpdate 系统消息 |
|
//Recall 指令超时或者失败回调消息 |
|
//unbind 被管理员提出群组 |
|
//video 视频通话 |
|
//rejcet 视频通话被拒绝 |
|
//upHeartRate 心率 |
|
//upBodyTemperature 体温 |
|
//abnormalBodyTemperature 体温异常消息 |
|
//abnormalHeartRate 心率异常消息 |
|
*/ |
|
if(isShow){ |
|
return ; |
|
} |
|
AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate; |
|
UITabBarController *tabBarVC = (UITabBarController*)appDelegate.window.rootViewController; |
|
UINavigationController *navVC = (UINavigationController*)tabBarVC.selectedViewController; |
|
//获取当前的 VC |
|
UIViewController *viewController = navVC.viewControllers.lastObject; |
|
if(!viewController){ |
|
return; |
|
} |
|
|
|
//排查其他页面的收到通知时的回调 |
|
if(![weakSelf isEqual: viewController]){ |
|
return; |
|
} |
|
|
|
|
|
if([viewController isKindOfClass:[RemoteCameraViewController class]]){ |
|
//在远程拍照页面 |
|
return; |
|
} |
|
|
|
|
|
NSDictionary *dic = note.object; |
|
NSDictionary *msgDic = dic[@"message"]; |
|
NSString * msgType = msgDic[@"type"]; |
|
NSString *content = @"有新消息,是否前往查看"; |
|
NSString *cancelStr = @"取消"; |
|
__block NSInteger selectIndex = 0; |
|
|
|
if(!msgType){ |
|
return ; |
|
} |
|
|
|
|
|
if([msgType isEqualToString:@"wifi"] || [msgType isEqualToString:@"battery"]) { |
|
// 在Wi-Fi列表获取界面 |
|
return; |
|
} |
|
|
|
|
|
if([msgType isEqualToString:@"upHeartRate"] || [msgType isEqualToString:@"upBodyTemperature"]){ |
|
//清除定时的 |
|
if([msgType isEqualToString:@"upBodyTemperature"]){ |
|
[UserDefaults removeObjectForKey:[NSString stringWithFormat:@"%@&%@",TempMeasurementTimeKey,msgDic[@"imei"]]]; |
|
}else{ |
|
[UserDefaults removeObjectForKey:[NSString stringWithFormat:@"%@&%@",HeartMeasurementTimeKey,msgDic[@"imei"]]]; |
|
} |
|
|
|
if([NSStringFromClass([viewController class]) isEqualToString:@"WatchHomeViewController"] || |
|
[NSStringFromClass([viewController class]) isEqualToString:@"HAndTViewController"] ){ |
|
//在首页或者是 心率/体温页面 刷新数据 |
|
[self viewWillAppear:YES]; |
|
return; |
|
}else{ |
|
return; |
|
} |
|
} |
|
//是否是申请的消息 |
|
if([msgType isEqualToString:@"identityTransfer"]){ |
|
if([msgDic[@"openid"] isEqualToString:cUser.openid]){ |
|
return; |
|
} |
|
} |
|
int video_type = [msgDic[@"video_type"] intValue]; |
|
if([msgType isEqualToString:@"video"]){ |
|
//收到设备回拨 APP 视频通话 的视频推送 |
|
AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate; |
|
if([UIApplication sharedApplication].applicationState == UIApplicationStateActive){ |
|
[app cleanVideoNotification]; |
|
}else{ |
|
if(video_type == 1){ |
|
NSString * alertStr = [msgDic objectForKey:@"msgTitle"]; |
|
[app generateLocalNotificationsWithAlertStr:alertStr AndDataInfo:dic]; |
|
} |
|
} |
|
if(video_type == 1){ |
|
//声网 |
|
//获取当前的 VC |
|
UIViewController *viewController = self.navigationController.viewControllers.lastObject; |
|
if(![viewController isKindOfClass:[CallViewController class]]){ |
|
[weakSelf showCallViewWithDic:msgDic]; |
|
} |
|
return; |
|
} |
|
|
|
//MARK: 注意收到视频通话时需要 拨打过来的 imei 的Device 对象 |
|
if (video_type == 4){ |
|
//MARK:收到设备拨过来的消息 登录菊风SDK 等待连接 |
|
[self showJuphoonCallViewWithDic:msgDic WithPushDic:dic]; |
|
return; |
|
} |
|
|
|
//MARK: 收到佰锐视频来电消息 |
|
if (video_type == 5) { |
|
[self showBairuiCallViewWithDic:msgDic WithPushDic:dic]; |
|
return; |
|
} |
|
|
|
//MARK: 收到鹈鹕视频来电 |
|
if (video_type == 6) { |
|
[self showTihuCallViewWithDic:msgDic WithPushDic:dic]; |
|
return; |
|
} |
|
|
|
} |
|
if([msgType isEqualToString:@"reject"]){ |
|
// AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate; |
|
// if(app.backgroudMsg){ |
|
// //MARK: 取消本地推送 |
|
// [app cleanVideoNotification]; |
|
// [app setNormallyAlertStr:[NSString stringWithFormat:@"设备 %@ 邀请您通话未接通",msgDic[@"imei"]] UserInfo:nil]; |
|
// [[JX_GCDTimerManager sharedInstance] cancelTimerWithName:VideoTimerIdentify]; |
|
// [[JX_GCDTimerManager sharedInstance] cancelTimerWithName:PlayVibrationIdentify]; |
|
// app.stopVibration = YES; |
|
// } |
|
[UICommon MessageSuccessText:dic[@"msgTitle"] isImg:NO]; |
|
return; |
|
} |
|
if([viewController isKindOfClass:[MessageViewController class]]){ |
|
//在消息中心 |
|
MessageViewController *tempVC = (MessageViewController*)viewController; |
|
if([msgType isEqualToString:@"applicationRrecord"] |
|
|| [msgType isEqualToString:@"checkedResults"]){ |
|
selectIndex = 1; |
|
}else if ([msgType isEqualToString:@"identityTransfer"] |
|
|| [msgType isEqualToString:@"identityTransfered"] |
|
|| [msgType isEqualToString:@"systemUpdate"]){ |
|
selectIndex = 2; |
|
} |
|
tempVC.selectedIndex = selectIndex; |
|
UIViewController *needRefresh = viewController.childViewControllers.lastObject; |
|
[needRefresh viewWillAppear:YES]; |
|
return; |
|
} |
|
if([msgType isEqualToString:@"systemUpdate"]){ |
|
content = [NSString stringWithFormat:@"有新的系统消息,是否前往查看"]; |
|
selectIndex = 2; |
|
}else if([msgType isEqualToString:@"applicationRrecord"]){ |
|
//成员 申请 关注设备的 消息 (管理员才能收到) |
|
content = [NSString stringWithFormat:@"收到关注 %@(%@)的请求,是否前往消息中心审核", msgDic[@"name"],msgDic[@"imei"]]; |
|
selectIndex = 1; |
|
}else if([msgType isEqualToString:@"checkedResults"]){ //被审核结果消息 |
|
NSString *res = msgDic[@"action"]; |
|
NSString *temp = @""; |
|
if([res isEqualToString:@"agree"]){ |
|
temp = @"同意"; |
|
}else if([res isEqualToString:@"reject"]){ |
|
temp = @"拒绝"; |
|
} |
|
content = [NSString stringWithFormat:@"管理员%@你关注设备(%@)", temp,msgDic[@"imei"]]; |
|
selectIndex = 1; |
|
|
|
// MARK 设置同意的设备为默认设备 add by lsz 2021-06-21 |
|
if ([res isEqualToString:@"agree"]) { |
|
[User saveAgreeImei:msgDic[@"imei"]]; |
|
} |
|
|
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
//刷新页面 |
|
[viewController viewWillAppear:YES]; |
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
|
|
} destructiveHandler:nil]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
return; |
|
|
|
}else if([msgType isEqualToString:@"LoginOffLine"]){ |
|
|
|
// 异地下线 |
|
//清除 记住的密码 |
|
[UserDefaults setBool:NO forKey:kifRememberPWDKey]; |
|
[UserDefaults removeObjectForKey:@"lastpwd"]; |
|
|
|
content = msgDic[@"content"]; |
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
[[NSNotificationCenter defaultCenter] postNotificationName:@"outLogin" |
|
object:nil]; |
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
[[NSNotificationCenter defaultCenter] postNotificationName:@"outLogin" |
|
object:nil]; |
|
} destructiveHandler:^(LGAlertView *alertView) { |
|
|
|
}]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
return; |
|
}else if ([msgType isEqualToString:@"identityTransfer"]){//身份变更消息 |
|
// 您已把[name][imei]的管理员身份转移给(phone) |
|
return; |
|
// selectIndex = 2; |
|
|
|
}else if ([msgType isEqualToString:@"photograph"]) { |
|
//是上传远程拍照的信息 |
|
content = [NSString stringWithFormat:@"【%@】上传照片,是否前往查看",msgDic[@"name"]]; |
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"前往查看"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
//前往远程拍照页面查看 |
|
//先判断 当前的 imei 是否是 推送的 imei,如果不是就切换一下 主设备 |
|
if(![cUser.cDevice.imei isEqualToString:msgDic[@"imei"]]){ |
|
for (Device* item in cUser.myDevices) { |
|
if([item.imei isEqualToString: msgDic[@"imei"]]){ |
|
cUser.cDevice = item; |
|
} |
|
} |
|
} |
|
|
|
RemoteCameraViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"RemoteCameraViewController"]; |
|
vc.hidesBottomBarWhenPushed = YES; |
|
AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate; |
|
UITabBarController *tabBarVC = (UITabBarController*)appDelegate.window.rootViewController; |
|
UINavigationController *navVC = (UINavigationController*)tabBarVC.selectedViewController; |
|
[navVC pushViewController:vc animated:YES]; |
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
[viewController viewWillAppear:YES]; |
|
} destructiveHandler:^(LGAlertView *alertView) { |
|
|
|
}]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
return; |
|
}else if ([msgType isEqualToString:@"CostFlow"]) { |
|
//是查询话费流量的信息 推送 |
|
|
|
//在查询话费流量页面 |
|
if([NSStringFromClass([viewController class]) isEqualToString:@"QueryCallRatesRoFlowVC"]){ |
|
[viewController viewWillAppear:YES]; |
|
return; |
|
}else{ |
|
|
|
content = [NSString stringWithFormat:@"【%@】有新的话费流量查询消息,是否前往查看",msgDic[@"name"]]; |
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"前往查看"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
//前往远程拍照页面查看 |
|
//先判断 当前的 imei 是否是 推送的 imei,如果不是就切换一下 主设备 |
|
if(![cUser.cDevice.imei isEqualToString:msgDic[@"imei"]]){ |
|
for (Device* item in cUser.myDevices) { |
|
if([item.imei isEqualToString: msgDic[@"imei"]]){ |
|
cUser.cDevice = item; |
|
} |
|
} |
|
} |
|
UIViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"QueryCallRatesRoFlowVC"]; |
|
vc.hidesBottomBarWhenPushed = YES; |
|
AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate; |
|
UITabBarController *tabBarVC = (UITabBarController*)appDelegate.window.rootViewController; |
|
UINavigationController *navVC = (UINavigationController*)tabBarVC.selectedViewController; |
|
[navVC pushViewController:vc animated:YES]; |
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
[viewController viewWillAppear:YES]; |
|
} destructiveHandler:^(LGAlertView *alertView) { |
|
|
|
}]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
return; |
|
} |
|
}else if ([msgType isEqualToString:@"sos"]) { |
|
|
|
//是 SOS 的求救信息 |
|
// content = [NSString stringWithFormat:@"【%@】触发SOS,地址:%@",msgDic[@"name"], msgDic[@"address"]]; |
|
content = [NSString stringWithFormat:@"【%@】触发SOS",msgDic[@"name"]]; |
|
AudioServicesPlaySystemSound(alarmSoundSysID); |
|
|
|
if([msgDic valueForKey:@"msgContent"]){ |
|
content = msgDic[@"msgContent"]; |
|
} |
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
//前往消息中心页面查看 |
|
//先判断 当前的 imei 是否是 推送的 imei,如果不是就切换一下 主设备 |
|
if(![cUser.cDevice.imei isEqualToString:msgDic[@"imei"]]){ |
|
for (Device* item in cUser.myDevices) { |
|
if([item.imei isEqualToString: msgDic[@"imei"]]){ |
|
cUser.cDevice = item; |
|
} |
|
} |
|
} |
|
//销毁声音 |
|
AudioServicesDisposeSystemSoundID(alarmSoundSysID); |
|
|
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
[viewController viewWillAppear:YES]; |
|
} destructiveHandler:^(LGAlertView *alertView) { |
|
|
|
}]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
return; |
|
}else if ([msgType isEqualToString:@"rail"] |
|
|| [msgType isEqualToString:@"lowBattery"] |
|
|| [msgType isEqualToString:@"identityTransfered"] //身份被变更消息 |
|
|| [msgType isEqualToString:@"Recall"] //指令超时 |
|
|| [msgType isEqualToString:@"applicationOvertime"] //记录失效时间 |
|
|| [msgType isEqualToString:@"unbind"] //被管理员提出群组 |
|
|| [msgType isEqualToString:@"abnormalBodyTemperature"] //体温异常 |
|
|| [msgType isEqualToString:@"abnormalHeartRate"] //心率异常 |
|
) { |
|
|
|
|
|
if([msgType isEqualToString:@"rail"]){ |
|
//是进出安全围栏的信息 |
|
//【宝贝昵称】进入/离开安全区域【家】 |
|
NSString *res = msgDic[@"action"]; |
|
NSString *temp = @""; |
|
if([res isEqualToString:@"enter"]){ |
|
temp = @"进入"; |
|
}else if([res isEqualToString:@"leave"]){ |
|
temp = @"离开"; |
|
} |
|
content = [NSString stringWithFormat:@"【%@】%@安全区域【%@】",msgDic[@"name"],temp,msgDic[@"railName"]]; |
|
AudioServicesPlaySystemSound(alarmSoundSysID); |
|
|
|
}else if([msgType isEqualToString:@"identityTransfered"]){ |
|
//身份被变更消息 |
|
//(name)设备[imei]的管理员把 管理员身份转移给您 |
|
//【宝贝昵称】的管理员将管理员身份转让给你 |
|
content = [NSString stringWithFormat:@"【%@】的管理员将管理员身份转让给你",msgDic[@"name"]]; |
|
|
|
}else if([msgType isEqualToString:@"lowBattery"]){ |
|
//低电量的信息 |
|
//【宝贝昵称】设备低电量,当前电量8% |
|
content = [NSString stringWithFormat:@"【%@】设备低电量,当前电量%@%%",msgDic[@"name"],msgDic[@"battery"]]; |
|
AudioServicesPlaySystemSound(alarmSoundSysID); |
|
}else if([msgType isEqualToString:@"Recall"]){ |
|
//指令超时回调 |
|
content = msgDic[@"content"]; |
|
}else if([msgType isEqualToString:@"applicationOvertime"]){ |
|
//记录失效消息 |
|
if([msgDic[@"own"] integerValue] == 1){ |
|
content = [NSString stringWithFormat:@"你申请关注【%@】设备,管理员未及时处理,申请已失效,请重新申请并联系管理员处理",msgDic[@"name"]]; |
|
}else{ |
|
content = [NSString stringWithFormat:@"用户(%@)申请关注【%@】设备,记录未及时处理,已失效",msgDic[@"phone"],msgDic[@"name"]]; |
|
|
|
} |
|
}else if([msgType isEqualToString:@"unbind"]){ |
|
//被管理员踢出群组 |
|
content = [NSString stringWithFormat:@"【%@】设备【%@】的管理员取消您关注设备",msgDic[@"name"],msgDic[@"imei"]]; |
|
// 回到首页 |
|
[tabBarVC setSelectedIndex:0]; |
|
[navVC popToRootViewControllerAnimated:YES]; |
|
|
|
}else if([msgType isEqualToString:@"abnormalBodyTemperature"] //体温异常 |
|
|| [msgType isEqualToString:@"abnormalHeartRate"] //心率异常 |
|
){ |
|
AudioServicesPlaySystemSound(alarmSoundSysID); |
|
} |
|
if([msgDic valueForKey:@"msgTitle"]){ |
|
content = msgDic[@"msgTitle"]; |
|
} |
|
|
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
AudioServicesDisposeSystemSoundID(alarmSoundSysID); |
|
//刷新页面 |
|
[viewController viewWillAppear:YES]; |
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
[viewController viewWillAppear:YES]; |
|
} destructiveHandler:nil]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
return; |
|
} |
|
|
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"前往查看"] cancelButtonTitle:cancelStr destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
//前往查看 |
|
MessageViewController *vc = [MessageViewController new]; |
|
vc.title = @"消息中心"; |
|
vc.hidesBottomBarWhenPushed = YES; |
|
vc.selectedIndex = selectIndex; |
|
AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate; |
|
UITabBarController *tabBarVC = (UITabBarController*)appDelegate.window.rootViewController; |
|
UINavigationController *navVC = (UINavigationController*)tabBarVC.selectedViewController; |
|
[navVC pushViewController:vc animated:YES]; |
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
[viewController viewWillAppear:YES]; |
|
} destructiveHandler:^(LGAlertView *alertView) { |
|
|
|
}]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
|
|
}]; |
|
/* |
|
//chatGroupDisband 聊天群被解散 (管理员对设备恢复出厂设置) |
|
//chatGroupRemove 用户离开聊天群 (XX 取消对设备的 关注) |
|
//chatGroupEnter 用户进入聊天群 |
|
*/ |
|
[[NSNotificationCenter defaultCenter] addObserverForName:PUSH_type_chatGroupDisband object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { |
|
NSDictionary *msgDic = note.object; |
|
if(isShow){ |
|
return ; |
|
} |
|
AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate; |
|
UITabBarController *tabBarVC = (UITabBarController*)appDelegate.window.rootViewController; |
|
UINavigationController *navVC = (UINavigationController*)tabBarVC.selectedViewController; |
|
//获取当前的 VC |
|
UIViewController *viewController = navVC.viewControllers.lastObject; |
|
if(!viewController){ |
|
|
|
return; |
|
} |
|
//恢复出厂设置 |
|
NSString *content = [NSString stringWithFormat:@"【%@】的管理员将设备恢复出厂设置",msgDic[@"name"]]; |
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:nil destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
//刷新页面 |
|
[viewController viewWillAppear:YES]; |
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
[viewController viewWillAppear:YES]; |
|
} destructiveHandler:nil]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
|
|
}]; |
|
|
|
[[NSNotificationCenter defaultCenter] addObserverForName:PUSH_type_chatGroupRemove object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { |
|
NSDictionary *msgDic = note.object; |
|
if(isShow){ |
|
return ; |
|
} |
|
AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate; |
|
UITabBarController *tabBarVC = (UITabBarController*)appDelegate.window.rootViewController; |
|
UINavigationController *navVC = (UINavigationController*)tabBarVC.selectedViewController; |
|
//获取当前的 VC |
|
UIViewController *viewController = navVC.viewControllers.lastObject; |
|
if(!viewController){ |
|
|
|
return; |
|
} |
|
// 取消关注 |
|
NSString *content = [NSString stringWithFormat:@"【%@】的 %@ 取消关注设备",msgDic[@"device_name"],msgDic[@"account_name"]]; |
|
isShow = YES; |
|
[self.view endEditing:YES]; //防止 LGAlertView 错乱 |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:content style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:nil destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
//刷新页面 |
|
[viewController viewWillAppear:YES]; |
|
isShow = NO; |
|
} cancelHandler:^(LGAlertView *alertView) { |
|
isShow = NO; |
|
[viewController viewWillAppear:YES]; |
|
} destructiveHandler:nil]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
}]; |
|
|
|
[[NSNotificationCenter defaultCenter] addObserverForName:PUSH_type_chatGroupEnter object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { |
|
NSDictionary *dic = note.object; |
|
xLog(@"某个用户关注的 设备 data:%@", dic) |
|
}]; |
|
|
|
|
|
|
|
} |
|
|
|
- (UIStatusBarStyle)preferredStatusBarStyle |
|
{ |
|
return UIStatusBarStyleLightContent; //返回白色 |
|
//return UIStatusBarStyleDefault; //返回黑色 |
|
} |
|
|
|
-(void)viewDidDisappear:(BOOL)animated{ |
|
[super viewDidDisappear:animated]; |
|
[[NSNotificationCenter defaultCenter] removeObserver:self name:AccountMessageNotification object:nil]; |
|
[[NSNotificationCenter defaultCenter] removeObserver:self name:PUSH_type_chatGroupDisband object:nil]; |
|
[[NSNotificationCenter defaultCenter] removeObserver:self name:PUSH_type_chatGroupRemove object:nil]; |
|
[[NSNotificationCenter defaultCenter] removeObserver:self name:PUSH_type_chatGroupEnter object:nil]; |
|
//PUSH_type_chatGroupDisband |
|
//PUSH_type_chatGroupRemove |
|
//PUSH_type_chatGroupEnter |
|
} |
|
|
|
|
|
- (BOOL)prefersStatusBarHidden { |
|
// return YES; //设置状态栏隐藏 |
|
return NO; //设置状态栏显示 |
|
} |
|
|
|
|
|
|
|
- (IBAction)rightBarItemClick:(UIBarButtonItem *)sender{ |
|
} |
|
|
|
|
|
|
|
|
|
|
|
- (void)viewWillDisappear:(BOOL)animated{ |
|
[super viewWillDisappear:animated]; |
|
[UICommon HidenLoading]; |
|
[[NSNotificationCenter defaultCenter] removeObserver:self]; |
|
} |
|
|
|
- (void)goBack:(id)sender{ |
|
if (self.navigationController.viewControllers.count > 1) { |
|
[self.navigationController popViewControllerAnimated:YES]; |
|
}else{ |
|
[self dismissViewControllerAnimated:YES completion:nil]; |
|
} |
|
} |
|
|
|
|
|
- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView |
|
{ |
|
NSString *vcName = NSStringFromClass([self class]); |
|
NSString *imageName = @"空白历史记录"; |
|
if ([vcName isEqualToString:@"DisturbBanViewController"]) |
|
{ |
|
//imageName = @"空白上课禁用"; |
|
imageName = @"空白历史记录"; |
|
self.emptyText = @"未添加上课禁用时段"; |
|
} |
|
else if ([vcName isEqualToString:@"ContactsViewController"]) |
|
{ |
|
// imageName = @"空白电话本"; |
|
imageName = @"空白历史记录"; |
|
self.emptyText = @"未添加设备联系人"; |
|
} |
|
else if ([vcName isEqualToString:@"AttentionMessageViewController"]) |
|
{ |
|
imageName = @"空白消息"; |
|
self.emptyText = @"没有关注记录"; |
|
} |
|
else if ([vcName isEqualToString:@"RemindMessageViewController"]) |
|
{ |
|
imageName = @"空白消息"; |
|
self.emptyTitle = @"还没有提醒"; |
|
} |
|
else if ([vcName isEqualToString:@"SystermMessageViewController"]) |
|
{ |
|
imageName = @"空白消息"; |
|
self.emptyTitle = @"没有通知消息"; |
|
} |
|
else if ([vcName isEqualToString:@"RailListViewController"]) |
|
{ |
|
imageName = @"空白电子围栏"; |
|
self.emptyText = @"进出电子围栏,会报警!"; |
|
} |
|
else if ([vcName isEqualToString:@"TrackViewController"]) |
|
{ |
|
imageName = @"空白历史记录"; |
|
self.emptyTitle = @"没有历史数据"; |
|
} |
|
else if ([vcName isEqualToString:@"VoiceAlarmViewController"]) |
|
{ |
|
//imageName = @"空白闹钟"; |
|
imageName = @"空白历史记录"; |
|
self.emptyText = @"未添加闹钟"; |
|
} |
|
else if ([vcName isEqualToString:@"RemoteCameraViewController"]) |
|
{ |
|
// imageName = @"空白照片"; |
|
imageName = @"空白历史记录"; |
|
self.emptyText = @"没有照片"; |
|
} |
|
else if ([vcName isEqualToString:@"QueryCallRatesRoFlowVC"]) |
|
{ |
|
//imageName = @"icon_no_news"; |
|
imageName = @"空白历史记录"; |
|
self.emptyText = @"没有消息"; |
|
} |
|
else if ([vcName isEqualToString:@"AddVideoMomberVC"]) |
|
{ |
|
imageName = @"video_list_none"; |
|
self.emptyText = @"没有视频通话成员"; |
|
} |
|
else if ([vcName isEqualToString:@"CallMessageViewController"]) |
|
{ |
|
//imageName = @"icon_no_news"; |
|
imageName = @"空白历史记录"; |
|
self.emptyText = @"没有通话记录"; |
|
} |
|
else if ([vcName isEqualToString:@"ShortMessageListViewController"]) |
|
{ |
|
imageName = @"空白历史记录"; |
|
self.emptyText = @"未收到手表短信"; |
|
} |
|
return ImageName_(imageName); |
|
} |
|
|
|
|
|
/// 空白页添加按钮,设置按钮文字 |
|
- (NSAttributedString *)buttonTitleForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state |
|
{ |
|
NSMutableAttributedString *attributedString; |
|
if (STRINGHASVALUE(self.buttonTitle)) |
|
{ |
|
attributedString = [[NSMutableAttributedString alloc] initWithString:self.buttonTitle]; |
|
|
|
[attributedString addAttribute:NSFontAttributeName |
|
value:Font_(15) |
|
range:NSMakeRange(0, self.buttonTitle.length)]; |
|
[attributedString addAttribute:NSForegroundColorAttributeName |
|
value:[self.buttonTitleColor isKindOfClass:UIColor.class] ? self.buttonTitleColor : KKWhiteColorColor |
|
range:NSMakeRange(0, self.buttonTitle.length)]; |
|
} |
|
return attributedString; |
|
} |
|
|
|
/// 空状态描述 |
|
- ( NSAttributedString *)descriptionForEmptyDataSet:(UIScrollView *)scrollView |
|
{ |
|
NSMutableAttributedString *attributedString; |
|
if (STRINGHASVALUE(self.emptyText)) |
|
{ |
|
attributedString = [[NSMutableAttributedString alloc] initWithString:self.emptyText]; |
|
|
|
[attributedString addAttribute:NSFontAttributeName |
|
value:Font_(14) |
|
range:NSMakeRange(0, self.emptyText.length)]; |
|
[attributedString addAttribute:NSForegroundColorAttributeName |
|
value:KKGrey163 |
|
range:NSMakeRange(0, self.emptyText.length)]; |
|
} |
|
return attributedString; |
|
} |
|
|
|
/// 空状态标题 |
|
- ( NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView |
|
{ |
|
NSMutableAttributedString *attributedString; |
|
if (STRINGHASVALUE(self.emptyTitle)) |
|
{ |
|
attributedString = [[NSMutableAttributedString alloc] initWithString:self.emptyTitle]; |
|
|
|
[attributedString addAttribute:NSFontAttributeName |
|
value:FontBold_(18) |
|
range:NSMakeRange(0, self.emptyTitle.length)]; |
|
[attributedString addAttribute:NSForegroundColorAttributeName |
|
value:KKBlack20 |
|
range:NSMakeRange(0, self.emptyTitle.length)]; |
|
} |
|
|
|
|
|
return attributedString; |
|
} |
|
|
|
/// 按钮背景图片 |
|
- (UIImage *)buttonBackgroundImageForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state |
|
{ |
|
return self.buttonImg; |
|
} |
|
|
|
- (CGFloat)verticalOffsetForEmptyDataSet:(UIScrollView *)scrollView |
|
{ |
|
return -70.0f; |
|
} |
|
|
|
/// 空白页背景颜色 |
|
- (nullable UIColor *)backgroundColorForEmptyDataSet:(UIScrollView *)scrollView |
|
{ |
|
return KKClearColor; |
|
} |
|
|
|
- (void)emptyDataSetWillAppear:(UIScrollView *)scrollView |
|
{ |
|
scrollView.contentOffset = CGPointZero; |
|
} |
|
|
|
|
|
|
|
- (void)tapNoReachableImageAction{ |
|
[self viewWillDisappear:NO]; |
|
[self viewDidDisappear:NO]; |
|
[self viewWillAppear:NO]; |
|
[[NSNotificationCenter defaultCenter] postNotificationName:NoReachableRefreshNotification object:nil]; |
|
} |
|
|
|
- (void)didReceiveMemoryWarning { |
|
[super didReceiveMemoryWarning]; |
|
// Dispose of any resources that can be recreated. |
|
} |
|
/** |
|
MARK: 显示声网的视频通话的页面 |
|
*/ |
|
- (void)showCallViewWithDic:(NSDictionary*)dic{ |
|
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; |
|
CallViewController *callVC = [sb instantiateViewControllerWithIdentifier:@"CallViewController"]; |
|
callVC.modalPresentationStyle = UIModalPresentationFullScreen; |
|
callVC.device = [cUser getDeviceWithImei:dic[@"imei"]]; |
|
callVC.appid = dic[@"appid"]; |
|
callVC.token = dic[@"token"]; |
|
@try { |
|
callVC.video_id = dic[@"video_id"]; |
|
callVC.channelID = dic[@"channelID"]; |
|
callVC.uid = [dic[@"app_uid"] integerValue]; |
|
callVC.device_uid = [dic[@"uid"] integerValue]; |
|
callVC.videoSize = CGSizeMake([dic[@"distinguishability_width"] floatValue], [dic[@"distinguishability_heiger"] floatValue]) ; //AgoraVideoDimension640x360 |
|
callVC.limit_time = [dic[@"limit_time"] intValue]; |
|
callVC.wait_time = [dic[@"wait_time"] intValue]; |
|
} @catch (NSException *exception) { |
|
xLog(@"exception.reason %@",exception.reason); |
|
} @finally { |
|
callVC.isReceiveCall = YES; |
|
[self presentViewController:callVC animated:NO completion:nil]; |
|
} |
|
|
|
} |
|
|
|
|
|
//MARK: 调起菊风视频的页面 |
|
-(void)showJuphoonCallViewWithDic:(NSDictionary*)dic WithPushDic:(NSDictionary*)pushDic{ |
|
//需要去注册 |
|
// AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate; |
|
// [app initJHWithPushDate:dic]; |
|
JuphoonModel * jhModel = [JuphoonModel mj_objectWithKeyValues:dic]; |
|
[[JCManager shared] initializeWithAPPKey:jhModel.appkey]; |
|
|
|
//MARK: 存在 call VC 的时候忽略通知 |
|
if([JCManager shared].callViewController == nil) |
|
{ |
|
[[JCManager shared] initializeWithAPPKey:cUser.juphoonKey]; |
|
JCClientLoginParam* loginParam = [[JCClientLoginParam alloc] init]; |
|
loginParam.directConnectEnable = YES; |
|
[[JCManager shared].client setServerAddress:@"http:cn.router.justalkcloud.com:8080"]; |
|
[[JCManager shared].client login:cUser.openid password:@"test" loginParam:loginParam]; |
|
[[JCManager shared].mediaDevice enableSpeaker:YES]; |
|
[JCManager shared].model = jhModel; |
|
[JCManager shared].device = [cUser getDeviceWithImei:jhModel.imei]; |
|
[JCManager shared].gMianVC = self; |
|
[JCManager shared].pushData = pushDic; |
|
} |
|
//登陆成功后等待设备拨打重复拨打到APP |
|
|
|
} |
|
|
|
//MARK: 调起佰锐视频的页面 |
|
/** |
|
appkey = "A3BEE84E-9C7A-D848-85D3-90F233D9A022"; |
|
deviceName = "\U5b9d\U8d1d"; |
|
deviceVideoType = BR; |
|
"device_username" = 11529; |
|
"distinguishability_heiger" = 160; |
|
"distinguishability_width" = 120; |
|
imei = 801001234567913; |
|
"limit_time" = 300; |
|
openid = f4a0123c576d894883ddd187; |
|
password = 123456; |
|
timestamp = "1606375222.449991"; |
|
type = video; |
|
username = 11344; |
|
"video_id" = "801001234567913-201126152022"; |
|
"video_type" = 5; |
|
"wait_time" = 60; |
|
*/ |
|
-(void)showBairuiCallViewWithDic:(NSDictionary*)dic WithPushDic:(NSDictionary*)pushDic{ |
|
//需要去注册 |
|
// AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate; |
|
// [app initJHWithPushDate:dic]; |
|
BairuiModel * brModel = [BairuiModel mj_objectWithKeyValues:dic]; |
|
|
|
if ([BRManager shared].callViewController == nil) { |
|
BRManager * manager = [BRManager shared]; |
|
if (![manager isUserLogin]) { |
|
[manager login:@([brModel.username intValue]) nick: cUser.name]; |
|
NSLog(@"====佰锐视频推送用户->登录===="); |
|
} else { |
|
NSLog(@"====佰锐视频推送用户->已经登录="); |
|
} |
|
|
|
[BRManager shared].brModel = brModel; |
|
} |
|
|
|
//登陆成功后等待设备拨打重复拨打到APP |
|
} |
|
|
|
-(void)showTihuCallViewWithDic:(NSDictionary*)dic WithPushDic:(NSDictionary*)pushDic{ |
|
|
|
TihuModel *thModel = [TihuModel mj_objectWithKeyValues:dic]; |
|
|
|
if ([TihuManager shared].callViewController == nil) { |
|
if (![[TihuManager shared] isUserLogin]) { |
|
[[TihuManager shared] initialize]; |
|
[TihuManager shared].gMianVC = self; |
|
[[TihuManager shared] login:cUser.openid pwd:@"123456"]; |
|
|
|
xLog(@"鹈鹕账号是:%@", cUser.openid); |
|
} else { |
|
xLog(@"====>鹈鹕视频账号已经登录"); |
|
} |
|
[TihuManager shared].thModel = thModel; |
|
} |
|
} |
|
|
|
|
|
|
|
#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
|
|
|