[英]How to end a phone call on iOS by callkit?
我想通過 callkit api 結束通話。 但是我得到了這個信息“com.apple.CallKit.error.requesttransaction error 4”。 我不知道為什么和發生了什么。 順便說一下,電話是真正的電話,而不是 VOIP 電話。
CallKit CXError.h CXErrorCodeRequestTransactionErrorUnknownCallUUID 4
准備,為com.apple.CallKit.error.requesttransaction error 1啟用 voip & 創建全局變量CXCallController *callController
首先,我使用CXCallObserver get call UUID
- (void)callObserver:(CXCallObserver *)callObserver callChanged: (CXCall *)call {
}
接着,我使用一些api結束電話並將其放入callObserver
NSUUID *callUUID = call.UUID;
CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:callUUID];
CXTransaction *transaction = [[CXTransaction alloc] initWithAction:endaction];
[self.callController requestTransaction:transaction completion:^(NSError * _Nullable error) {
if (error) {
NSLog(@"EndCallAction transaction request failed: %@", [error localizedDescription]);
} else {
NSLog(@"EndCallAction transaction request successful");
}
}];
我已經參考了如何在 CallKit 中結束通話。 但是沒有用。 我不知道。 請幫助或嘗試提供一些想法如何實現這一目標。 謝謝!
您只能使用 CallKit 來管理由您的應用程序建立的 VoIP 呼叫。 您無法從其他應用程序管理蜂窩電話或 VoIP 電話。
Apple 文檔似乎表明可以將電話呼叫置於保持狀態https://developer.apple.com/documentation/callkit/cxcall但這似乎對我不起作用。 如果它應該工作,它也應該適用於結束通話。
我也嘗試了上述方法,即使 CallObserver 從調用列表中提供了調用 UUID,它也顯示了上述錯誤。
但是想知道如果您有一個 VOIP 應用程序並且您正在使用現有的電話呼叫,並且您想保持/結束電話呼叫並接聽(您的 VOIP 應用程序的)來電,那么這將如何工作。
你必須通過傳遞 uuid 來調用下面的函數
func performEndCallAction(uuid: UUID) {
let endCallAction = CXEndCallAction(call: uuid)
let transaction = CXTransaction(action: endCallAction)
callKitCallController.request(transaction) { error in
if let error = error {
NSLog("EndCallAction transaction request failed: \(error.localizedDescription).")
} else {
NSLog("EndCallAction transaction request successful")
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.