【问题标题】:How do I end the call session on callkit from my custom ongoing call UI?如何从我的自定义正在进行的呼叫 UI 结束 callkit 上的呼叫会话?
【发布时间】:2019-03-22 11:47:42
【问题描述】:

当用户从 CallKit UI 结束通话时,应用结束通话,实际的 VOIP 通话也结束。但是,当我从自定义 UI 结束通话时,VOIP 通话结束,但 CallKit 仍然处于活动状态。如何从我的自定义 UI 结束 CallKit 会话?

当我在 CallKit UI 上按下结束通话时会发生这种情况:

 func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
     XCPjsua.shared()?.endCall()
     action.fulfill()
 }

当我从自定义 UI 结束通话时会发生这种情况(我应该在此处关闭 CallKit 吗?):

- (void)endcall {
    [[XCPjsua sharedXCPjsua] endCall];
}

【问题讨论】:

    标签: ios swift xcode swift4.2 callkit


    【解决方案1】:

    如果您想从您的自定义 UI 结束通话,您应该通过 CXTransaction

    let callController = CXCallController()
    
    let endCallAction = CXEndCallAction(call: aUUID)
    callController.request(
        CXTransaction(action: endCallAction),
        completion: { error in
            if let error = error {
                print("Error: \(error)")
            } else {
                print("Success")
            }
        })
    

    这将导致provider(_ provider: CXProvider, perform action: CXEndCallAction) 被调用。

    在所有其他情况下(即远程结束、无人接听等... - 请参阅 CXCallEndedReason),您应该只报告结束的通话:

    let provider: CXProvider
    
    provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)
    

    在这种情况下,provider(_ provider: CXProvider, perform action: CXEndCallAction) 不会被调用。

    【讨论】:

    • 你的意思是我只在打电话时使用CXTransaction(应该调用CXStartCallAction)?
    • @Elsammak 我的意思是如果用户想要结束通话(例如通过结束通话按钮),无论他是否开始通话,您都应该使用CXTransaction。在所有其他情况下,即通话因不依赖于用户操作的原因而结束,您只需将通话结束报告给CXProvider
    • 谢谢,我在这个问题上已经有 2 天了。总是得到错误 4,这意味着虽然存在这样的调用 UUID,但不存在。仅调用 reportCall 即可发挥魅力(y)
    【解决方案2】:

    我设法使用 reportCall 函数将其关闭

     provider?.reportCall(with: appG.uuid, endedAt: Date(), reason: .remoteEnded)
    

    所以我只是在我的自定义 UI 中按下结束通话时调用该函数

    【讨论】:

      【解决方案3】:

      我使用此代码关闭通话

      provider?.reportCall(with: PushUtility.shared.uuid!, endedAt: Date(), reason: .remoteEnded)
      

      首先保存您用于连接呼叫的 uuid,使用该 uuid 结束呼叫。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多