2017-07-25 109 views
1

我試圖在我的voip呼叫被源或目的地斷開連接後刪除callkit屏幕。如何在VOIP呼叫斷開後關閉Callkit屏幕

我用這個代碼

CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:[NSUUID UUID]]; 
CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()]; 
requestTransaction:[CXTransaction transactionWithActions:nil completion:completion]]; 

但它不工作,關閉callkit。任何人都可以幫我解決這個問題嗎?

回答

0

您必須將您的CXTransactionCXEndCallAction合併爲您的requestTransaction

首先在initWithCallUUID你必須通過你目前的電話NSUUID。那麼你可以撥打requestTransaction在你的CXCallController並通過[CXTransaction transactionWithActions:@[endaction]進入它,而不是你所做的nil

CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:[NSUUID UUID]]; // your current call UUID 
CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()]; 
[callController requestTransaction:[CXTransaction transactionWithActions:@[endaction]] completion:completion]; 
0

您可以在通話斷開方法中使用以下方法。

@property (nonatomic, strong) CXCallController *callKitCallController; 

- (void)performEndCallActionWithUUID:(NSUUID *)uuid { 
    if (uuid == nil) { 
     return; 
    } 

    CXEndCallAction *endCallAction = [[CXEndCallAction alloc] initWithCallUUID:uuid]; 
    CXTransaction *transaction = [[CXTransaction alloc] initWithAction:endCallAction]; 

    [self.callKitCallController requestTransaction:transaction completion:^(NSError *error) { 
     if (error) { 
      NSLog(@"EndCallAction transaction request failed: %@", [error localizedDescription]); 
     } 
     else { 
      NSLog(@"EndCallAction transaction request successful"); 
     } 
    }]; 
}