From 2265a8478325a04871aab6a86d49c28d7d65443a Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期一, 29 五月 2023 15:17:01 +0800 Subject: [PATCH] 增加开锁二次确认弹窗 --- HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinphoneIntercomVC.m | 89 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 68 insertions(+), 21 deletions(-) diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneIntercomVC.m" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneIntercomVC.m" index 1ea7374..2b70d1b 100644 --- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneIntercomVC.m" +++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneIntercomVC.m" @@ -35,6 +35,9 @@ @property (nonatomic,strong) dispatch_source_t openDoorTimer; @property (nonatomic, assign) int openDoorTimeout; @property (nonatomic, assign) int callTimeout; + +@property (nonatomic, assign) BOOL isHangUpByRemote;//鏄惁瀵规柟杩滅▼鎸傛柇 + @end @implementation HDLLinphoneIntercomVC{ @@ -50,6 +53,11 @@ NSString * callingStr; NSString * hangUpStr; NSString * endOfCallStr; + + + NSString * cancelStr; + NSString * tipMsgStr; + // int openDoorTimeout; //鍏ㄥ眬鍙橀噺 SystemSoundID sound; @@ -90,11 +98,15 @@ } + - (void)linphoneCallUpdate:(NSNotification *)notif { int state = [[notif.userInfo objectForKey:@"state"] intValue]; - if ((state == LinphoneCallEnd || state == LinphoneCallError)) {//鎸傛柇浜� + if ((state == LinphoneCallEnd || state == LinphoneCallError)) {//鎸傛柇浜�(铏界劧鑷繁鎸傛柇涔熶細璧癓inphoneCallUpdate閫氱煡锛屼絾鑷繁鎸傛柇鐨勮瘽椤甸潰宸查攢姣侊紝涓嶄細瑙﹀彂璇ユ柟娉�) NSLog(@"鎸傛柇鎴栧嚭閿欎簡"); + [self stopPlaySystemSound]; + self.isHangUpByRemote=YES; [self showUIAlertViewWithBack:@"閫氳瘽缁撴潫"]; + } } @@ -114,6 +126,8 @@ unlockSuccessfullyStr = @"寮�閿佹垚鍔�"; callingStr = @"鏉ョ數涓�..."; endOfCallStr = @"閫氳瘽缁撴潫"; + cancelStr = @"鍙栨秷"; + tipMsgStr = @"纭畾寮�閿佸悧?"; }else{ tipStr = @"Prompt"; okStr = @"OK"; @@ -125,6 +139,8 @@ unlockSuccessfullyStr = @"Unlock successfully"; callingStr = @"Incoming call"; endOfCallStr = @"End of call"; + cancelStr = @"Cancel"; + tipMsgStr = @"Are you sure to unlock?"; } } @@ -283,7 +299,27 @@ [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal]; //寮�閿� if(self.hdlLinphoneCallDelegate != NULL){ - [self.hdlLinphoneCallDelegate onUnlockAction]; + + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:tipMsgStr preferredStyle:UIAlertControllerStyleAlert]; + + // 娣诲姞鍙栨秷鎸夐挳 + UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelStr style:UIAlertActionStyleCancel handler:nil]; + [alertController addAction:cancelAction]; + + // 娣诲姞纭鎸夐挳 + WEAKSELF_AT + UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { + + [weakSelf_AT.hdlLinphoneCallDelegate onUnlockAction]; + }]; + [alertController addAction:confirmAction]; + + // 鑾峰彇褰撳墠瑙嗗浘鎺у埗鍣� + UIViewController *currentViewController = [UIApplication sharedApplication].keyWindow.rootViewController; + + // 鏄剧ず寮圭獥 + [self presentViewController:alertController animated:YES completion:nil]; + } } @@ -331,6 +367,7 @@ } return _hangUpTextBtn; } + //鎺ュ惉 鍥炬爣鎸夐挳 - (UIButton *)answerImgBtn{ if (_answerImgBtn == nil) { @@ -349,7 +386,15 @@ [self stopPlaySystemSound]; // [[HDLCallManager instance] acceptCallByCallID:self.CallId hasVideo:self.hasVideo]; - [[HDLLinphoneManager instance] acceptCall]; + [HDLLinphoneManager.instance enableMicro:true]; + if (self.deviceType==HDLLPType_HDLSR) { + NSLog(@"鍙嶅懠"); + [HDLLinphoneManager.instance startCall:self.userName]; + }else{ + NSLog(@"鎺ュ惉"); + [[HDLLinphoneManager instance] acceptCall]; + + } /// 寮�鍚璁� // [self startTalk]; @@ -467,9 +512,9 @@ /** 寮�鍚�掕鏃� */ - (void)startCountdown { - if (_callTimeout > 100) { - return; - } +// if (_callTimeout > 100) { +// return; +// } _callTimeout = 0; // GCD瀹氭椂鍣� dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); @@ -480,24 +525,24 @@ dispatch_source_set_event_handler(_countdownTimer, ^{ WEAKSELF_AT - if(weakSelf_AT.callTimeout >= 100 ){// 璁℃椂缁撴潫 - // 鍏抽棴瀹氭椂鍣� - dispatch_source_cancel(weakSelf_AT.countdownTimer); - - dispatch_async(dispatch_get_main_queue(), ^{ - NSLog(@"瓒呮椂"); - [weakSelf_AT backAction]; - - }); - - }else{// 璁℃椂涓� +// if(weakSelf_AT.callTimeout >= 100 ){// 璁℃椂缁撴潫 +// // 鍏抽棴瀹氭椂鍣� +// dispatch_source_cancel(weakSelf_AT.countdownTimer); +// +// dispatch_async(dispatch_get_main_queue(), ^{ +// NSLog(@"瓒呮椂"); +// [weakSelf_AT backAction]; +// +// }); +// +// }else{// 璁℃椂涓� weakSelf_AT.callTimeout++; dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf_AT ShowTime:weakSelf_AT.callTimeout]; }); - } +// } }); // 寮�鍚畾鏃跺櫒 @@ -653,7 +698,9 @@ [self stopPlaySystemSound]; //闃叉鐢ㄦ埛涓嶆寜鎸傛柇锛屾垨鑰呬笉绛夋敹鍒板鏂圭殑鎸傛柇锛岀偣鍑昏繑鍥炴寜閽�� //1.鏆傚仠SDK鐩稿叧鎾斁 - [self stopPlay]; + if (!self.isHangUpByRemote) { + [self stopPlay]; + } //2.Delegate閲婃斁 self.hdlLinphoneCallDelegate = nil; //3.瀹氭椂鍣ㄩ噴鏀� @@ -672,8 +719,8 @@ } -(void)dealloc{ - NSLog(@"==============dealloc 1"); - [[NSNotificationCenter defaultCenter] removeObserver:self]; + NSLog(@"==============dealloc 瀵硅薄閿�姣佷簡"); +// [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)willEnterForeground:(NSNotification*)notification{ NSLog(@"willEnterForeground"); -- Gitblit v1.8.0