【问题标题】:How to remove callback option UI of CallKit after ending the call结束通话后如何删除CallKit的回调选项UI
【发布时间】:2018-01-10 10:56:28
【问题描述】:

在我的应用程序中,我使用 CallKit 进行来电。应用程序中没有拨出电话功能。一切都很好,但是当接收器或 dailer 结束通话时,它会显示带有回调选项的 CallKit UI。我不想显示回调选项,怎么办?

我结束通话的代码

func end(call: SpeakerboxCall) {

    let endCallAction = CXEndCallAction(call: call.uuid)
    let transaction = CXTransaction()
    transaction.addAction(endCallAction)

    requestTransaction(transaction, action: "endCall")

}

private func requestTransaction(_ transaction: CXTransaction, action:
    String = "") {

    callController.request(transaction) { error in
        if let error = error {
            print("Error requesting transaction: \(error)")
        } else {
            print("Requested transaction \(action) successfully")
        }
    }
}

【问题讨论】:

  • 如果显示回调选项,则呼叫未正确结束。所以请正确检查结束通话功能。

标签: ios swift callkit


【解决方案1】:

我已经解决了。我在事务未正确完成的情况下强制退出 CallKit。

 AppDelegate.shared.providerDelegate?.provider.reportCall(with: call.uuid, endedAt: nil, reason: CXCallEndedReason.remoteEnded)

我们需要将endAt设置为nil,将reason设置为remoteEnded

【讨论】:

  • 有效!我也被这个问题困扰了很长时间。谢谢!为您的解决方案。
  • 太棒了!它帮助了你@NandhaKumar。别忘了给答案投票。谢谢!
  • 对我有用!非常感谢。可以使用以下命令访问共享实例:“UIApplication.shared.delegate as!AppDelegate”
  • 对我不起作用,callkit 屏幕仍然出现在堆栈中
【解决方案2】:

关闭所有调用 (Swift4)

func performEndCallAction() {

    for call in self.cxCallController.callObserver.calls {

        let endCallAction = CXEndCallAction(call: call.uuid)
        let transaction = CXTransaction(action: endCallAction)

        cxCallController.request(transaction) { error in
            if let error = error {
                NSLog("EndCallAction transaction request failed: \(error.localizedDescription).")
                return
            }

            NSLog("EndCallAction transaction request successful")

        }

    }

}

【讨论】:

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