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/HDLLinphoneProviderDelegate.m                            |  418 +++++++++++++++++-----------------
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK.xcodeproj/project.pbxproj                                |    2 
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinphoneIntercomVC.m                                  |   18 +
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinphoneManager.m                                     |  109 ++++----
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.h                            |   17 
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLPOnMonitorViewController.m                           |   14 
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinPhoneCommon.h                                      |    2 
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinPhoneCommon.m                                      |   31 ++
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK.xcodeproj/xcshareddata/xcschemes/HDLLinPhoneSDK.xcscheme |    2 
 Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/libHDLLinPhoneSDK.a            |    0 
 HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinPhoneSDK.m                                         |   86 ++++++-
 11 files changed, 405 insertions(+), 294 deletions(-)

diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK.xcodeproj/project.pbxproj" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK.xcodeproj/project.pbxproj"
index 7626b8e..9ee6882 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK.xcodeproj/project.pbxproj"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK.xcodeproj/project.pbxproj"
@@ -375,6 +375,7 @@
 		AE9CC93926B8DD3F00FD514C /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
 				CODE_SIGN_STYLE = Automatic;
 				DEVELOPMENT_TEAM = V39C74NPHU;
 				ENABLE_BITCODE = NO;
@@ -398,6 +399,7 @@
 		AE9CC93A26B8DD3F00FD514C /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
 				CODE_SIGN_STYLE = Automatic;
 				DEVELOPMENT_TEAM = V39C74NPHU;
 				ENABLE_BITCODE = NO;
diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK.xcodeproj/xcshareddata/xcschemes/HDLLinPhoneSDK.xcscheme" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK.xcodeproj/xcshareddata/xcschemes/HDLLinPhoneSDK.xcscheme"
index a196c2f..28965b4 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK.xcodeproj/xcshareddata/xcschemes/HDLLinPhoneSDK.xcscheme"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK.xcodeproj/xcshareddata/xcschemes/HDLLinPhoneSDK.xcscheme"
@@ -31,7 +31,7 @@
       </Testables>
    </TestAction>
    <LaunchAction
-      buildConfiguration = "Debug"
+      buildConfiguration = "Release"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       launchStyle = "0"
diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLPOnMonitorViewController.m" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLPOnMonitorViewController.m"
index 0be0912..2e13e73 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLPOnMonitorViewController.m"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLPOnMonitorViewController.m"
@@ -10,7 +10,7 @@
 #import <Photos/Photos.h>
 #import "HDLLinphoneUtlis.h"
 #import "HDLLinphoneManager.h"
-
+#import "HDLLinPhoneCommon.h"
 //#import "HDLLinPhoneSDK-Swift.h"
 //#import "LCUtlis.h"
 //#import "LCApiKit.h"
@@ -37,7 +37,7 @@
 @property (nonatomic,strong) dispatch_source_t openDoorTimer;
 @property (nonatomic, assign) int openDoorTimeout;
 
-
+@property (nonatomic, assign)  BOOL isHangUpByRemote;//鏄惁瀵规柟杩滅▼鎸傛柇
 /// 鎾斁鍣�
 //@property (nonatomic, strong) LCOpenSDK_PlayWindow *playWindow;
 
@@ -101,6 +101,7 @@
     int state = [[notif.userInfo objectForKey:@"state"] intValue];
     if ((state == LinphoneCallEnd || state == LinphoneCallError)){//鎸傛柇浜�
         NSLog(@"鎸傛柇鎴栧嚭閿欎簡");
+        self.isHangUpByRemote=YES;
         [self showUIAlertViewWithBack:@"鐩戣缁撴潫"];
         
     }
@@ -450,8 +451,9 @@
     [alertController addAction:[UIAlertAction actionWithTitle:okStr style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
         [self backAction];
     }]];
-    
     [self presentViewController:alertController animated:YES completion:nil];
+//    [[HDLLinPhoneCommon rootController] presentViewController:alertController animated:YES completion:nil];
+
 }
 
 
@@ -469,14 +471,16 @@
 
 - (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
-    
+   
     
 }
 -(void)viewWillDisappear:(BOOL)animated{
     [super viewWillDisappear:animated];
     
     //1.鏆傚仠SDK鐩稿叧鎾斁
-    [self stopPlay];
+    if (!self.isHangUpByRemote) {
+        [self stopPlay];
+    }
     //2.Delegate閲婃斁
 //    self.mLCCallDelegate = nil;
     //3.瀹氭椂鍣ㄩ噴鏀�
diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneCommon.h" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneCommon.h"
index 7c54af7..c4cd0a0 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneCommon.h"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneCommon.h"
@@ -12,6 +12,8 @@
 
 @interface HDLLinPhoneCommon : NSObject
 +(UIViewController *) topMostController;//鑾峰彇椤跺眰瑙嗗浘
++(UIViewController *) rootController;//鑾峰彇鏍规帶鍒跺櫒
++(BOOL)rootPresentVCContent:(Class)vcClass;//鍒ゆ柇鎵�鏈塸resent鐨勬帶鍒跺櫒鏄惁鍚湁VC
 +(UIWindow*)appWindow;
 +(NSString *)temporarySaveImagePath;//涓存椂淇濆瓨鍥剧墖鐨勮矾鍔�
 +(void)saveImageToPhotosAlbum:(UIImage *)savedImage;//淇濆瓨鍥剧墖鍒扮浉鍐�
diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneCommon.m" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneCommon.m"
index d643489..87139e4 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneCommon.m"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneCommon.m"
@@ -22,6 +22,37 @@
     return topController;
 }
 
++(UIViewController *) rootController {
+    UIViewController*topController ;
+    if ([UIApplication sharedApplication].delegate.window) {
+        topController= [UIApplication sharedApplication].delegate.window.rootViewController;
+    }else{
+        topController=[self appWindow].rootViewController;
+    }
+//    while(topController.presentedViewController){
+//        topController=topController.presentedViewController;
+//    }
+    return topController;
+}
+
++(BOOL)rootPresentVCContent:(Class)vcClass{
+    UIViewController*roootVC ;
+    if ([UIApplication sharedApplication].delegate.window) {
+        roootVC= [UIApplication sharedApplication].delegate.window.rootViewController;
+    }else{
+        roootVC=[self appWindow].rootViewController;
+    }
+    while(roootVC.presentedViewController){
+        if ([roootVC.presentedViewController isKindOfClass:vcClass]) {
+            return YES;
+            break;
+        }
+        roootVC=roootVC.presentedViewController;
+    }
+    
+    return NO;
+}
+
 +(UIWindow*)appWindow{
     UIWindow *window;
     if (@available(iOS 13.0, *)) {
diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneSDK.m" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneSDK.m"
index 4befa5a..75db80f 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneSDK.m"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinPhoneSDK.m"
@@ -13,7 +13,7 @@
 #import "HDLLPOnMonitorViewController.h"
 
 @interface HDLLinPhoneSDK()
-
+@property (strong, nonatomic) HDLLinphoneIntercomVC* presentingIntercomVC;//褰撳墠灞曠ず鐨勬潵鐐规帶鍒跺櫒锛岀敤浜庡瓨鏀炬鍦ㄥ睍绀虹殑鏉ョ偣鎺у埗鍣紝閬垮厤閲嶅寮瑰嚭鐣岄潰
 @end
 
 @implementation HDLLinPhoneSDK
@@ -70,18 +70,19 @@
     if (state == LinphoneCallIncomingReceived) {
         [self.hdlLinphoneCallDelegate onIncomingCall:userName];
         if(self.IsAutoJumpCallView){
-//                    NSString *callId=[NSString stringWithFormat:@"%@",[notif.userInfo objectForKey:@"callID"]];
-//                    BOOL hasVideo=(BOOL)[notif.userInfo objectForKey:@"hasVideo"];
+
             
-                    HDLLinphoneIntercomVC *vc=[[HDLLinphoneIntercomVC alloc]init];
-//                    vc.CallId=callId;
-                    vc.hasVideo=YES;
-                    vc.hdlLinphoneCallDelegate=self.hdlLinphoneCallDelegate;
-                    vc.modalPresentationStyle = UIModalPresentationFullScreen;
-//                    self.IntercomVC=vc;
-                    [[HDLLinPhoneCommon topMostController] presentViewController:vc animated:YES completion:^{
+//                    HDLLinphoneIntercomVC *vc=[[HDLLinphoneIntercomVC alloc]init];
+////                    vc.CallId=callId;
+//                    vc.hasVideo=YES;
+//                    vc.hdlLinphoneCallDelegate=self.hdlLinphoneCallDelegate;
+//                    vc.modalPresentationStyle = UIModalPresentationFullScreen;
+////                    self.IntercomVC=vc;
+//                    [[HDLLinPhoneCommon topMostController] presentViewController:vc animated:YES completion:^{
+//
+//                    }];
             
-                    }];
+            [self gotoHDLLinphoneIntercomVC:nil];
         }
     }
 }
@@ -114,16 +115,73 @@
     
 //    NSString *callId=[NSString stringWithFormat:@"%@",[notif.userInfo objectForKey:@"callID"]];
 //    BOOL hasVideo=(BOOL)[notif.userInfo objectForKey:@"hasVideo"];
+//    NSLog(@"椤跺眰瑙嗗浘锛�%@",[HDLLinPhoneCommon topMostController]);
+   
+    if ([HDLLinPhoneCommon rootPresentVCContent:[HDLLinphoneIntercomVC class]]||[HDLLinPhoneCommon rootPresentVCContent:[HDLLPOnMonitorViewController class]]) {
+        if ([[HDLLinPhoneCommon topMostController] isKindOfClass:[UIAlertController class]]) {
+            NSLog(@"椤跺眰瑙嗗浘鏄棰戦�氳瘽椤�");
+            __weak typeof(self) weakSelf = self;
+            
+            [[HDLLinPhoneCommon topMostController] dismissViewControllerAnimated:NO completion:^{
+                UIViewController *topVC=[HDLLinPhoneCommon topMostController];
+                if ([topVC isKindOfClass:[HDLLPOnMonitorViewController class]]) {
+                    [topVC dismissViewControllerAnimated:NO completion:^{
+                        [weakSelf toLinphoneIntercomVC:titleName];
+                    }];
+                }else if ([topVC isKindOfClass:[HDLLinphoneIntercomVC class]]) {
+                    [topVC dismissViewControllerAnimated:NO completion:^{
+                        [weakSelf toLinphoneIntercomVC:titleName];
+                    }];
+                }
+            }];
+        }
+//        UIViewController *topVC=[HDLLinPhoneCommon topMostController];
+//        if ([topVC isKindOfClass:[HDLLinphoneIntercomVC class]]) {
+//            [topVC dismissViewControllerAnimated:NO completion:nil];
+//        }
+        return;
+    }
 
+    [self toLinphoneIntercomVC:titleName];
+    
+//    if (self.presentingIntercomVC) {
+//        __weak typeof(self) weakSelf = self;
+//        [self.presentingIntercomVC dismissViewControllerAnimated:NO completion:^{
+//            NSLog(@"椤甸潰閫�鍑轰簡");
+//            weakSelf.presentingIntercomVC=nil;
+//            [weakSelf toLinphoneIntercomVC:titleName];
+//        }];
+//
+//        return;
+//    }
+//    NSLog(@"鎵ц鍒版垜浜�");
+//    [self toLinphoneIntercomVC:titleName];
+//    HDLLinphoneIntercomVC *vc=[[HDLLinphoneIntercomVC alloc]init];
+////    vc.CallId=callId;
+//    vc.hasVideo=YES;
+//    vc.hdlLinphoneCallDelegate=self.hdlLinphoneCallDelegate;
+//    if (titleName) {
+//        vc.titleName=titleName;
+//    }
+//    vc.modalPresentationStyle = UIModalPresentationFullScreen;
+//    self.presentingIntercomVC=vc;
+//    [[HDLLinPhoneCommon topMostController] presentViewController:vc animated:YES completion:^{
+//
+//    }];
+}
+
+-(void)toLinphoneIntercomVC:(NSString*)titleName{
     HDLLinphoneIntercomVC *vc=[[HDLLinphoneIntercomVC alloc]init];
 //    vc.CallId=callId;
     vc.hasVideo=YES;
     vc.hdlLinphoneCallDelegate=self.hdlLinphoneCallDelegate;
-    vc.titleName=titleName;
+    if (titleName) {
+        vc.titleName=titleName;
+    }
     vc.modalPresentationStyle = UIModalPresentationFullScreen;
-//    self.IntercomVC=vc;
+//    self.presentingIntercomVC=vc;
     [[HDLLinPhoneCommon topMostController] presentViewController:vc animated:YES completion:^{
-        
+
     }];
 }
 
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..2b91526 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{
@@ -90,11 +93,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:@"閫氳瘽缁撴潫"];
+        
         
     }
 }
@@ -331,6 +338,7 @@
     }
     return _hangUpTextBtn;
 }
+
 //鎺ュ惉 鍥炬爣鎸夐挳
 - (UIButton *)answerImgBtn{
     if (_answerImgBtn == nil) {
@@ -653,7 +661,9 @@
     [self stopPlaySystemSound];
     //闃叉鐢ㄦ埛涓嶆寜鎸傛柇锛屾垨鑰呬笉绛夋敹鍒板鏂圭殑鎸傛柇锛岀偣鍑昏繑鍥炴寜閽��
     //1.鏆傚仠SDK鐩稿叧鎾斁
-    [self stopPlay];
+    if (!self.isHangUpByRemote) {
+        [self stopPlay];
+    }
     //2.Delegate閲婃斁
     self.hdlLinphoneCallDelegate = nil;
     //3.瀹氭椂鍣ㄩ噴鏀�
@@ -672,8 +682,8 @@
 }
 
 -(void)dealloc{
-    NSLog(@"==============dealloc  1");
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
+    NSLog(@"==============dealloc 瀵硅薄閿�姣佷簡");
+//    [[NSNotificationCenter defaultCenter] removeObserver:self];
 }
 - (void)willEnterForeground:(NSNotification*)notification{
     NSLog(@"willEnterForeground");
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 {
diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.h" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.h"
index 43c3137..ab69322 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.h"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.h"
@@ -16,23 +16,24 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-
-#import <CallKit/CallKit.h>
+#import <Foundation/Foundation.h>
+//#import <CallKit/CallKit.h>
+#import <AVFoundation/AVAudioSession.h>
 #include <linphone/core.h>
 #ifndef ProviderDelegate_h
 #define ProviderDelegate_h
 
-@interface HDLLinphoneProviderDelegate : NSObject <CXProviderDelegate, CXCallObserverDelegate>
-
-@property CXProvider *provider;
-@property CXCallObserver *observer;
-@property CXCallController *controller;
+@interface HDLLinphoneProviderDelegate : NSObject
+// <CXProviderDelegate, CXCallObserverDelegate>
+//@property CXProvider *provider;
+//@property CXCallObserver *observer;
+//@property CXCallController *controller;
 @property NSMutableDictionary *calls;
 @property NSMutableDictionary *uuids;
 @property(nonatomic) LinphoneCall *pendingCall;
 @property LinphoneAddress *pendingAddr;
 @property BOOL pendingCallVideo;
-@property int callKitCalls;
+@property int callKCalls;
 
 - (void)reportIncomingCall:(LinphoneCall *) call withUUID:(NSUUID *)uuid handle:(NSString *)handle video:(BOOL)video;
 - (void)config;
diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.m" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.m"
index 36ef23d..fa0b143 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.m"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneProviderDelegate.m"
@@ -35,10 +35,10 @@
 	self.pendingCall = NULL;
 	self.pendingAddr = NULL;
 	self.pendingCallVideo = FALSE;
-	CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()];
-	[callController.callObserver setDelegate:self queue:dispatch_get_main_queue()];
-	self.controller = callController;
-	self.callKitCalls = 0;
+//	CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()];
+//	[callController.callObserver setDelegate:self queue:dispatch_get_main_queue()];
+//	self.controller = callController;
+	self.callKCalls = 0;
 
 	if (!self) {
 		NSLog(@"ProviderDelegate not initialized...");
@@ -47,21 +47,21 @@
 }
 
 - (void)config {
-	CXProviderConfiguration *config = [[CXProviderConfiguration alloc]
-		initWithLocalizedName:[NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleDisplayName"]];
-	config.ringtoneSound = @"notes_of_the_optimistic.caf";
-	config.supportsVideo = TRUE;
-	config.iconTemplateImageData = UIImagePNGRepresentation([UIImage imageNamed:@"callkit_logo"]);
-
-	NSArray *ar = @[ [NSNumber numberWithInt:(int)CXHandleTypeGeneric] ];
-	NSSet *handleTypes = [[NSSet alloc] initWithArray:ar];
-	[config setSupportedHandleTypes:handleTypes];
-	[config setMaximumCallGroups:2];
-	[config setMaximumCallsPerCallGroup:1];
-	//not show app's calls in tel's history
-	//config.includesCallsInRecents = NO;
-	self.provider = [[CXProvider alloc] initWithConfiguration:config];
-	[self.provider setDelegate:self queue:dispatch_get_main_queue()];
+//	CXProviderConfiguration *config = [[CXProviderConfiguration alloc]
+//		initWithLocalizedName:[NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleDisplayName"]];
+//	config.ringtoneSound = @"notes_of_the_optimistic.caf";
+//	config.supportsVideo = TRUE;
+//	config.iconTemplateImageData = UIImagePNGRepresentation([UIImage imageNamed:@"callkit_logo"]);
+//
+//	NSArray *ar = @[ [NSNumber numberWithInt:(int)CXHandleTypeGeneric] ];
+//	NSSet *handleTypes = [[NSSet alloc] initWithArray:ar];
+//	[config setSupportedHandleTypes:handleTypes];
+//	[config setMaximumCallGroups:2];
+//	[config setMaximumCallsPerCallGroup:1];
+//	//not show app's calls in tel's history
+//	//config.includesCallsInRecents = NO;
+//	self.provider = [[CXProvider alloc] initWithConfiguration:config];
+//	[self.provider setDelegate:self queue:dispatch_get_main_queue()];
 }
 
 - (void)configAudioSession:(AVAudioSession *)audioSession {
@@ -87,32 +87,32 @@
 	}
 }
 
-- (void)reportIncomingCall:(LinphoneCall *) call withUUID:(NSUUID *)uuid handle:(NSString *)handle video:(BOOL)video; {
-	// Create update to describe the incoming call and caller
-	CXCallUpdate *update = [[CXCallUpdate alloc] init];
-	update.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle];
-	update.supportsDTMF = TRUE;
-	update.supportsHolding = TRUE;
-	update.supportsGrouping = TRUE;
-	update.supportsUngrouping = TRUE;
-	update.hasVideo = _pendingCallVideo = video;
-
-	// Report incoming call to system
-//    LOGD(@"CallKit: report new incoming call with call-id: [%@] and UUID: [%@]", [_calls objectForKey:uuid], uuid);
-	[self.provider reportNewIncomingCallWithUUID:uuid
-										  update:update
-									  completion:^(NSError *error) {
-										  if (error) {
-//											  LOGE(@"CallKit: cannot complete incoming call with call-id: [%@] and UUID: [%@] from [%@] caused by [%@]",
-//                                                   [_calls objectForKey:uuid], uuid, handle, [error localizedDescription]);
-											  if ([error code] == CXErrorCodeIncomingCallErrorFilteredByDoNotDisturb ||
-												  [error code] == CXErrorCodeIncomingCallErrorFilteredByBlockList)
-												  linphone_call_decline(call,LinphoneReasonBusy); /*to give a chance for other devices to answer*/
-											  else
-												  linphone_call_decline(call,LinphoneReasonUnknown);
-										  }
-									  }];
-}
+//- (void)reportIncomingCall:(LinphoneCall *) call withUUID:(NSUUID *)uuid handle:(NSString *)handle video:(BOOL)video; {
+//	// Create update to describe the incoming call and caller
+//	CXCallUpdate *update = [[CXCallUpdate alloc] init];
+//	update.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle];
+//	update.supportsDTMF = TRUE;
+//	update.supportsHolding = TRUE;
+//	update.supportsGrouping = TRUE;
+//	update.supportsUngrouping = TRUE;
+//	update.hasVideo = _pendingCallVideo = video;
+//
+//	// Report incoming call to system
+////    LOGD(@"CallKit: report new incoming call with call-id: [%@] and UUID: [%@]", [_calls objectForKey:uuid], uuid);
+//	[self.provider reportNewIncomingCallWithUUID:uuid
+//										  update:update
+//									  completion:^(NSError *error) {
+//										  if (error) {
+////											  LOGE(@"CallKit: cannot complete incoming call with call-id: [%@] and UUID: [%@] from [%@] caused by [%@]",
+////                                                   [_calls objectForKey:uuid], uuid, handle, [error localizedDescription]);
+//											  if ([error code] == CXErrorCodeIncomingCallErrorFilteredByDoNotDisturb ||
+//												  [error code] == CXErrorCodeIncomingCallErrorFilteredByBlockList)
+//												  linphone_call_decline(call,LinphoneReasonBusy); /*to give a chance for other devices to answer*/
+//											  else
+//												  linphone_call_decline(call,LinphoneReasonUnknown);
+//										  }
+//									  }];
+//}
 
 - (void)setPendingCall:(LinphoneCall *)pendingCall {
 	if (pendingCall) {
@@ -127,177 +127,177 @@
 
 #pragma mark - CXProviderDelegate Protocol
 
-- (void)provider:(CXProvider *)provider performAnswerCallAction:(CXAnswerCallAction *)action {
-    NSUUID *uuid = action.callUUID;
-    NSString *callID = [self.calls objectForKey:uuid]; // first, make sure this callid is not already involved in a call
-//	LOGD(@"CallKit: Answering call with call-id: [%@] and UUID: [%@]", callID, uuid);
-	[self configAudioSession:[AVAudioSession sharedInstance]];
-	[action fulfill];
-	LinphoneCall *call = [HDLLinphoneManager.instance callByCallId:callID];
-	if (!call)
-		return;
+//- (void)provider:(CXProvider *)provider performAnswerCallAction:(CXAnswerCallAction *)action {
+//    NSUUID *uuid = action.callUUID;
+//    NSString *callID = [self.calls objectForKey:uuid]; // first, make sure this callid is not already involved in a call
+////	LOGD(@"CallKit: Answering call with call-id: [%@] and UUID: [%@]", callID, uuid);
+//	[self configAudioSession:[AVAudioSession sharedInstance]];
+//	[action fulfill];
+//	LinphoneCall *call = [HDLLinphoneManager.instance callByCallId:callID];
+//	if (!call)
+//		return;
+//
+//	self.callKitCalls++;
+//    self.pendingCall = call;
+//}
 
-	self.callKitCalls++;
-    self.pendingCall = call;
-}
-
-- (void)provider:(CXProvider *)provider performStartCallAction:(CXStartCallAction *)action {
-    NSUUID *uuid = action.callUUID;
-    NSString *callID = [self.calls objectForKey:uuid]; // first, make sure this callid is not already involved in a call
-	NSLog(@"CallKit: Starting Call with call-id: [%@] and UUID: [%@]", callID, uuid);
-	// To restart Audio Unit
-	[self configAudioSession:[AVAudioSession sharedInstance]];
-	[action fulfill];
-	LinphoneCall *call;
-	if (![callID isEqualToString:@""]) {
-		call = linphone_core_get_current_call(LC);
-	} else {
-		call = [HDLLinphoneManager.instance callByCallId:callID];
-	}
-	if (call != NULL) {
-        self.callKitCalls++;
-		self.pendingCall = call;
-	}
-}
-
-- (void)provider:(CXProvider *)provider performEndCallAction:(CXEndCallAction *)action {
-	self.callKitCalls--;
-	[action fulfill];
-	if (linphone_core_is_in_conference(LC)) {
-		HDLLinphoneManager.instance.conf = TRUE;
-		linphone_core_terminate_conference(LC);
-//        LOGD(@"CallKit: Ending the conference");
-	} else if (linphone_core_get_calls_nb(LC) > 1) {
-		HDLLinphoneManager.instance.conf = TRUE;
-		linphone_core_terminate_all_calls(LC);
-//        LOGD(@"CallKit: Ending all the ongoing calls");
-	} else {
-		NSUUID *uuid = action.callUUID;
-		NSString *callID = [self.calls objectForKey:uuid];
-		if (callID) {
-//            LOGD(@"CallKit: Ending the call with call-id: [%@] and UUID: [%@]", callID, uuid);
-			LinphoneCall *call = [HDLLinphoneManager.instance callByCallId:callID];
-			if (call) {
-				linphone_call_terminate((LinphoneCall *)call);
-			}
-			[self.uuids removeObjectForKey:callID];
-			[self.calls removeObjectForKey:uuid];
-		}
-	}
-}
-
-- (void)provider:(CXProvider *)provider performSetMutedCallAction:(nonnull CXSetMutedCallAction *)action {
-	[action fulfill];
-//	if ([[PhoneMainView.instance currentView] equal:CallView.compositeViewDescription]) {
-//		CallView *view = (CallView *)[PhoneMainView.instance popToView:CallView.compositeViewDescription];
-//		[view.microButton toggle];
+//- (void)provider:(CXProvider *)provider performStartCallAction:(CXStartCallAction *)action {
+//    NSUUID *uuid = action.callUUID;
+//    NSString *callID = [self.calls objectForKey:uuid]; // first, make sure this callid is not already involved in a call
+//	NSLog(@"CallKit: Starting Call with call-id: [%@] and UUID: [%@]", callID, uuid);
+//	// To restart Audio Unit
+//	[self configAudioSession:[AVAudioSession sharedInstance]];
+//	[action fulfill];
+//	LinphoneCall *call;
+//	if (![callID isEqualToString:@""]) {
+//		call = linphone_core_get_current_call(LC);
+//	} else {
+//		call = [HDLLinphoneManager.instance callByCallId:callID];
 //	}
-}
+//	if (call != NULL) {
+//        self.callKitCalls++;
+//		self.pendingCall = call;
+//	}
+//}
 
-- (void)provider:(CXProvider *)provider performSetHeldCallAction:(nonnull CXSetHeldCallAction *)action {
-	[action fulfill];
-	if (linphone_core_is_in_conference(LC) && action.isOnHold) {
-		linphone_core_leave_conference(LC);
-//        LOGD(@"CallKit: Leaving conference");
-		[NSNotificationCenter.defaultCenter postNotificationName:kLinphoneCallUpdate object:self];
-		return;
-	}
+//- (void)provider:(CXProvider *)provider performEndCallAction:(CXEndCallAction *)action {
+//	self.callKitCalls--;
+//	[action fulfill];
+//	if (linphone_core_is_in_conference(LC)) {
+//		HDLLinphoneManager.instance.conf = TRUE;
+//		linphone_core_terminate_conference(LC);
+////        LOGD(@"CallKit: Ending the conference");
+//	} else if (linphone_core_get_calls_nb(LC) > 1) {
+//		HDLLinphoneManager.instance.conf = TRUE;
+//		linphone_core_terminate_all_calls(LC);
+////        LOGD(@"CallKit: Ending all the ongoing calls");
+//	} else {
+//		NSUUID *uuid = action.callUUID;
+//		NSString *callID = [self.calls objectForKey:uuid];
+//		if (callID) {
+////            LOGD(@"CallKit: Ending the call with call-id: [%@] and UUID: [%@]", callID, uuid);
+//			LinphoneCall *call = [HDLLinphoneManager.instance callByCallId:callID];
+//			if (call) {
+//				linphone_call_terminate((LinphoneCall *)call);
+//			}
+//			[self.uuids removeObjectForKey:callID];
+//			[self.calls removeObjectForKey:uuid];
+//		}
+//	}
+//}
 
-	if (linphone_core_get_calls_nb(LC) > 1 && action.isOnHold) {
-		linphone_core_pause_all_calls(LC);
-//        LOGD(@"CallKit: Pausing all ongoing calls");
-		return;
-	}
+//- (void)provider:(CXProvider *)provider performSetMutedCallAction:(nonnull CXSetMutedCallAction *)action {
+//	[action fulfill];
+////	if ([[PhoneMainView.instance currentView] equal:CallView.compositeViewDescription]) {
+////		CallView *view = (CallView *)[PhoneMainView.instance popToView:CallView.compositeViewDescription];
+////		[view.microButton toggle];
+////	}
+//}
 
-	NSUUID *uuid = action.callUUID;
-	NSString *callID = [self.calls objectForKey:uuid];
-	if (!callID) {
-		return;
-	}
+//- (void)provider:(CXProvider *)provider performSetHeldCallAction:(nonnull CXSetHeldCallAction *)action {
+//	[action fulfill];
+//	if (linphone_core_is_in_conference(LC) && action.isOnHold) {
+//		linphone_core_leave_conference(LC);
+////        LOGD(@"CallKit: Leaving conference");
+//		[NSNotificationCenter.defaultCenter postNotificationName:kLinphoneCallUpdate object:self];
+//		return;
+//	}
+//
+//	if (linphone_core_get_calls_nb(LC) > 1 && action.isOnHold) {
+//		linphone_core_pause_all_calls(LC);
+////        LOGD(@"CallKit: Pausing all ongoing calls");
+//		return;
+//	}
+//
+//	NSUUID *uuid = action.callUUID;
+//	NSString *callID = [self.calls objectForKey:uuid];
+//	if (!callID) {
+//		return;
+//	}
+//
+////    LOGD(@"CallKit: Call  with call-id: [%@] and UUID: [%@] paused status changed to: []", callID, uuid, action.isOnHold ? @"Paused" : @"Resumed");
+//	LinphoneCall *call = [HDLLinphoneManager.instance callByCallId:callID];
+//	if (!call)
+//        return;
+//
+//	if (action.isOnHold) {
+//		HDLLinphoneManager.instance.speakerBeforePause = HDLLinphoneManager.instance.speakerEnabled;
+//		linphone_call_pause((LinphoneCall *)call);
+//	} else {
+//		if (linphone_core_get_conference(LC)) {
+//			linphone_core_enter_conference(LC);
+//			[NSNotificationCenter.defaultCenter postNotificationName:kLinphoneCallUpdate object:self];
+//		} else {
+//			[self configAudioSession:[AVAudioSession sharedInstance]];
+//			self.pendingCall = call;
+//		}
+//	}
+//}
 
-//    LOGD(@"CallKit: Call  with call-id: [%@] and UUID: [%@] paused status changed to: []", callID, uuid, action.isOnHold ? @"Paused" : @"Resumed");
-	LinphoneCall *call = [HDLLinphoneManager.instance callByCallId:callID];
-	if (!call)
-        return;
+//- (void)provider:(CXProvider *)provider performPlayDTMFCallAction:(CXPlayDTMFCallAction *)action {
+//	[action fulfill];
+//	NSUUID *uuid = action.callUUID;
+//	NSString *callID = [self.calls objectForKey:uuid];
+////    LOGD(@"CallKit: playing DTMF for call with call-id: [%@] and UUID: [%@]", callID, uuid);
+//	LinphoneCall *call = [HDLLinphoneManager.instance callByCallId:callID];
+//	char digit = action.digits.UTF8String[0];
+//	linphone_call_send_dtmf((LinphoneCall *)call, digit);
+//}
 
-	if (action.isOnHold) {
-		HDLLinphoneManager.instance.speakerBeforePause = HDLLinphoneManager.instance.speakerEnabled;
-		linphone_call_pause((LinphoneCall *)call);
-	} else {
-		if (linphone_core_get_conference(LC)) {
-			linphone_core_enter_conference(LC);
-			[NSNotificationCenter.defaultCenter postNotificationName:kLinphoneCallUpdate object:self];
-		} else {
-			[self configAudioSession:[AVAudioSession sharedInstance]];
-			self.pendingCall = call;
-		}
-	}
-}
+//- (void)provider:(CXProvider *)provider didActivateAudioSession:(AVAudioSession *)audioSession {
+//	NSLog(@"CallKit: Audio session activated");
+//	// Now we can (re)start the call
+//	if (self.pendingCall) {
+//		LinphoneCallState state = linphone_call_get_state(self.pendingCall);
+//		switch (state) {
+//			case LinphoneCallIncomingReceived:
+//				[HDLLinphoneManager.instance acceptCall:(LinphoneCall *)self.pendingCall evenWithVideo:_pendingCallVideo];
+//				break;
+//			case LinphoneCallPaused:
+//				linphone_call_resume((LinphoneCall *)self.pendingCall);
+//				break;
+//			case LinphoneCallStreamsRunning:
+//				// May happen when multiple calls
+//				break;
+//			default:
+//				break;
+//		}
+//	} else {
+//		if (_pendingAddr) {
+//			[HDLLinphoneManager.instance doCall:_pendingAddr];
+//		} else {
+////			LOGE(@"CallKit: No pending call");
+//		}
+//	}
+//
+//    [self setPendingCall:NULL];
+//	if (_pendingAddr)
+//		linphone_address_unref(_pendingAddr);
+//	_pendingAddr = NULL;
+//	_pendingCallVideo = FALSE;
+//}
+//
+//- (void)provider:(CXProvider *)provider didDeactivateAudioSession:(nonnull AVAudioSession *)audioSession {
+//	NSLog(@"CallKit : Audio session deactivated");
+//    [self setPendingCall:NULL];
+//	if (_pendingAddr)
+//		linphone_address_unref(_pendingAddr);
+//	_pendingAddr = NULL;
+//	_pendingCallVideo = FALSE;
+//}
 
-- (void)provider:(CXProvider *)provider performPlayDTMFCallAction:(CXPlayDTMFCallAction *)action {
-	[action fulfill];
-	NSUUID *uuid = action.callUUID;
-	NSString *callID = [self.calls objectForKey:uuid];
-//    LOGD(@"CallKit: playing DTMF for call with call-id: [%@] and UUID: [%@]", callID, uuid);
-	LinphoneCall *call = [HDLLinphoneManager.instance callByCallId:callID];
-	char digit = action.digits.UTF8String[0];
-	linphone_call_send_dtmf((LinphoneCall *)call, digit);
-}
-
-- (void)provider:(CXProvider *)provider didActivateAudioSession:(AVAudioSession *)audioSession {
-	NSLog(@"CallKit: Audio session activated");
-	// Now we can (re)start the call
-	if (self.pendingCall) {
-		LinphoneCallState state = linphone_call_get_state(self.pendingCall);
-		switch (state) {
-			case LinphoneCallIncomingReceived:
-				[HDLLinphoneManager.instance acceptCall:(LinphoneCall *)self.pendingCall evenWithVideo:_pendingCallVideo];
-				break;
-			case LinphoneCallPaused:
-				linphone_call_resume((LinphoneCall *)self.pendingCall);
-				break;
-			case LinphoneCallStreamsRunning:
-				// May happen when multiple calls
-				break;
-			default:
-				break;
-		}
-	} else {
-		if (_pendingAddr) {
-			[HDLLinphoneManager.instance doCall:_pendingAddr];
-		} else {
-//			LOGE(@"CallKit: No pending call");
-		}
-	}
-
-    [self setPendingCall:NULL];
-	if (_pendingAddr)
-		linphone_address_unref(_pendingAddr);
-	_pendingAddr = NULL;
-	_pendingCallVideo = FALSE;
-}
-
-- (void)provider:(CXProvider *)provider didDeactivateAudioSession:(nonnull AVAudioSession *)audioSession {
-	NSLog(@"CallKit : Audio session deactivated");
-    [self setPendingCall:NULL];
-	if (_pendingAddr)
-		linphone_address_unref(_pendingAddr);
-	_pendingAddr = NULL;
-	_pendingCallVideo = FALSE;
-}
-
-- (void)providerDidReset:(CXProvider *)provider {
-//	LOGD(@"CallKit: Provider reset");
-	HDLLinphoneManager.instance.conf = TRUE;
-	linphone_core_terminate_all_calls(LC);
-	[self.calls removeAllObjects];
-	[self.uuids removeAllObjects];
-}
-
-#pragma mark - CXCallObserverDelegate Protocol
-
-- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call {
-	NSLog(@"CallKit: Call changed");
-}
+//- (void)providerDidReset:(CXProvider *)provider {
+////	LOGD(@"CallKit: Provider reset");
+//	HDLLinphoneManager.instance.conf = TRUE;
+//	linphone_core_terminate_all_calls(LC);
+//	[self.calls removeAllObjects];
+//	[self.uuids removeAllObjects];
+//}
+//
+//#pragma mark - CXCallObserverDelegate Protocol
+//
+//- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call {
+//	NSLog(@"CallKit: Call changed");
+//}
 
 @end
diff --git a/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/libHDLLinPhoneSDK.a b/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/libHDLLinPhoneSDK.a
index a94bb2e..a408ad0 100644
--- a/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/libHDLLinPhoneSDK.a
+++ b/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/libHDLLinPhoneSDK.a
Binary files differ

--
Gitblit v1.8.0