From b469805b2d0c9b23ca020cf9356ff137205f856c Mon Sep 17 00:00:00 2001 From: 464027401@qq.com <464027401@qq.com> Date: 星期一, 27 九月 2021 10:22:10 +0800 Subject: [PATCH] 修复来点页面重复呼叫时alert位置不对问题 --- HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinphoneManager.m | 109 ++++++++++++++++++++++++++++-------------------------- 1 files changed, 56 insertions(+), 53 deletions(-) diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneManager.m" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneManager.m" index 3826803..b158f2b 100644 --- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneManager.m" +++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneManager.m" @@ -559,6 +559,8 @@ linphone_core_set_preferred_video_size([HDLLinphoneManager getLc], vsize); linphone_core_set_video_preset([HDLLinphoneManager getLc], [@"custom" UTF8String]); linphone_core_set_preferred_framerate([HDLLinphoneManager getLc], 5); +// linphone_core_enable_video_capture([HDLLinphoneManager getLc], false); +// linphone_core_enable_video_preview([HDLLinphoneManager getLc], FALSE); } @@ -1063,45 +1065,45 @@ : @""; NSUUID *uuid = (NSUUID *)[self.providerDelegate.uuids objectForKey:callId2]; if (uuid) { - LinphoneCall *callKit_call = (LinphoneCall *)linphone_core_get_calls(LC) + LinphoneCall *callK_call = (LinphoneCall *)linphone_core_get_calls(LC) ? linphone_core_get_calls(LC)->data : NULL; - const char *callKit_callId = callKit_call - ? linphone_call_log_get_call_id(linphone_call_get_call_log(callKit_call)) + const char *call_callId = callK_call + ? linphone_call_log_get_call_id(linphone_call_get_call_log(callK_call)) : NULL; - if (callKit_callId && !_conf) { + if (call_callId && !_conf) { // Create a CallKit call because there's not ! - NSString *callKit_callIdNS = [NSString stringWithUTF8String:callKit_callId]; - NSUUID *callKit_uuid = [NSUUID UUID]; - [HDLLinphoneManager.instance.providerDelegate.uuids setObject:callKit_uuid forKey:callKit_callIdNS]; - [HDLLinphoneManager.instance.providerDelegate.calls setObject:callKit_callIdNS forKey:callKit_uuid]; + NSString *callK_callIdNS = [NSString stringWithUTF8String:call_callId]; + NSUUID *callK_uuid = [NSUUID UUID]; + [HDLLinphoneManager.instance.providerDelegate.uuids setObject:callK_uuid forKey:callK_callIdNS]; + [HDLLinphoneManager.instance.providerDelegate.calls setObject:callK_callIdNS forKey:callK_uuid]; // NSString *address = [FastAddressBook displayNameForAddress:linphone_call_get_remote_address(callKit_call)]; - NSString *address=@""; - CXHandle *handle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:address]; - CXStartCallAction *act = [[CXStartCallAction alloc] initWithCallUUID:callKit_uuid handle:handle]; - CXTransaction *tr = [[CXTransaction alloc] initWithAction:act]; - [HDLLinphoneManager.instance.providerDelegate.controller requestTransaction:tr completion:^(NSError *err){}]; - [HDLLinphoneManager.instance.providerDelegate.provider reportOutgoingCallWithUUID:callKit_uuid startedConnectingAtDate:nil]; - [HDLLinphoneManager.instance.providerDelegate.provider reportOutgoingCallWithUUID:callKit_uuid connectedAtDate:nil]; +// NSString *address=@""; +// CXHandle *handle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:address]; +// CXStartCallAction *act = [[CXStartCallAction alloc] initWithCallUUID:callKit_uuid handle:handle]; +// CXTransaction *tr = [[CXTransaction alloc] initWithAction:act]; +// [HDLLinphoneManager.instance.providerDelegate.controller requestTransaction:tr completion:^(NSError *err){}]; +// [HDLLinphoneManager.instance.providerDelegate.provider reportOutgoingCallWithUUID:callKit_uuid startedConnectingAtDate:nil]; +// [HDLLinphoneManager.instance.providerDelegate.provider reportOutgoingCallWithUUID:callKit_uuid connectedAtDate:nil]; } - CXEndCallAction *act = [[CXEndCallAction alloc] initWithCallUUID:uuid]; - CXTransaction *tr = [[CXTransaction alloc] initWithAction:act]; - [HDLLinphoneManager.instance.providerDelegate.controller requestTransaction:tr completion:^(NSError *err){}]; - LOGI(@"CallKit - clearing CK as call ended on uuid %@",uuid); - [HDLLinphoneManager.instance.providerDelegate.provider reportOutgoingCallWithUUID:uuid connectedAtDate:[NSDate date]]; - [self.providerDelegate.uuids removeObjectForKey:callId2]; - [self.providerDelegate.calls removeObjectForKey:uuid]; - [self.providerDelegate.provider reportCallWithUUID:uuid endedAtDate:[NSDate date] reason:(state == LinphoneCallError ? CXCallEndedReasonFailed : CXCallEndedReasonRemoteEnded)]; +// CXEndCallAction *act = [[CXEndCallAction alloc] initWithCallUUID:uuid]; +// CXTransaction *tr = [[CXTransaction alloc] initWithAction:act]; +// [HDLLinphoneManager.instance.providerDelegate.controller requestTransaction:tr completion:^(NSError *err){}]; +// LOGI(@"CallKit - clearing CK as call ended on uuid %@",uuid); +// [HDLLinphoneManager.instance.providerDelegate.provider reportOutgoingCallWithUUID:uuid connectedAtDate:[NSDate date]]; +// [self.providerDelegate.uuids removeObjectForKey:callId2]; +// [self.providerDelegate.calls removeObjectForKey:uuid]; +// [self.providerDelegate.provider reportCallWithUUID:uuid endedAtDate:[NSDate date] reason:(state == LinphoneCallError ? CXCallEndedReasonFailed : CXCallEndedReasonRemoteEnded)]; } else { // Can happen when Call-ID changes (Replaces header) if (linphone_core_get_calls_nb(LC) ==0) { // Need to clear all CK calls - for (NSUUID *myUuid in self.providerDelegate.calls) { - [self.providerDelegate.provider reportCallWithUUID:myUuid - endedAtDate:NULL - reason:(state == LinphoneCallError - ? CXCallEndedReasonFailed - : CXCallEndedReasonRemoteEnded)]; - } +// for (NSUUID *myUuid in self.providerDelegate.calls) { +// [self.providerDelegate.provider reportCallWithUUID:myUuid +// endedAtDate:NULL +// reason:(state == LinphoneCallError +// ? CXCallEndedReasonFailed +// : CXCallEndedReasonRemoteEnded)]; +// } [self.providerDelegate.uuids removeAllObjects]; [self.providerDelegate.calls removeAllObjects]; } @@ -2804,29 +2806,30 @@ return; } - if (linphone_core_get_calls_nb(theLinphoneCore) < 1 && - floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_x_Max && - self.providerDelegate.callKitCalls < 1) { - NSLog(@"杩涜繖閲屽懠鍙簡"); - self.providerDelegate.callKitCalls++; - NSUUID *uuid = [NSUUID UUID]; - [HDLLinphoneManager.instance.providerDelegate.uuids setObject:uuid forKey:@""]; - [HDLLinphoneManager.instance.providerDelegate.calls setObject:@"" forKey:uuid]; - HDLLinphoneManager.instance.providerDelegate.pendingAddr = linphone_address_clone(iaddr); -// NSString *address = [FastAddressBook displayNameForAddress:iaddr]; - NSString *address =@"unknow"; - - CXHandle *handle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:address]; - CXStartCallAction *act = [[CXStartCallAction alloc] initWithCallUUID:uuid handle:handle]; - CXTransaction *tr = [[CXTransaction alloc] initWithAction:act]; - [HDLLinphoneManager.instance.providerDelegate.controller requestTransaction:tr - completion:^(NSError *err){ - NSLog(@"鍛煎彨error:%@",err); - }]; - } else { - NSLog(@"杩沝oCall鍛煎彨浜�"); - [self doCall:iaddr]; - } +// if (linphone_core_get_calls_nb(theLinphoneCore) < 1 && +// floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_x_Max && +// self.providerDelegate.callKitCalls < 1) { +// NSLog(@"杩涜繖閲屽懠鍙簡"); +// self.providerDelegate.callKitCalls++; +// NSUUID *uuid = [NSUUID UUID]; +// [HDLLinphoneManager.instance.providerDelegate.uuids setObject:uuid forKey:@""]; +// [HDLLinphoneManager.instance.providerDelegate.calls setObject:@"" forKey:uuid]; +// HDLLinphoneManager.instance.providerDelegate.pendingAddr = linphone_address_clone(iaddr); +//// NSString *address = [FastAddressBook displayNameForAddress:iaddr]; +// NSString *address =@"unknow"; +// +// CXHandle *handle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:address]; +// CXStartCallAction *act = [[CXStartCallAction alloc] initWithCallUUID:uuid handle:handle]; +// CXTransaction *tr = [[CXTransaction alloc] initWithAction:act]; +// [HDLLinphoneManager.instance.providerDelegate.controller requestTransaction:tr +// completion:^(NSError *err){ +// NSLog(@"鍛煎彨error:%@",err); +// }]; +// } else { +// NSLog(@"杩沝oCall鍛煎彨浜�"); +// [self doCall:iaddr]; +// } + [self doCall:iaddr]; } - (BOOL)doCall:(const LinphoneAddress *)iaddr { -- Gitblit v1.8.0