2

我实际上在 swift 2.3 上。呼入电话与 CallKit 配合得很好。但是外拨电话....

我看到了 SpeakerBox 项目,我也在做同样的事情。但它不起作用。

为了开始我的通话,我使用了

let handle = CXHandle(type: .PhoneNumber, value: "TOTO")
let startCallAction = CXStartCallAction(callUUID: uuid, handle: handle)
startCallAction.video = video
let transaction = CXTransaction()
transaction.addAction(startCallAction)
requestTransaction(transaction)

之后,在 SpeakerBox 项目中,这个函数被调用:

func provider(provider: CXProvider, perform action: CXStartCallAction)

但不在我的项目中。然后,当我挂断电话时,我看到:“通话失败”。

你有想法吗 ?

4

3 回答 3

0

确保您正在配置您的 CXProvider 并正确设置其委托。如果您不设置 CXProvider 的delegate属性,则委托将不会收到任何要执行的操作。

此外,如果您看到“呼叫失败”用户界面,这可能表明您的应用程序正在崩溃。我会检查崩溃日志或在调试器中运行应用程序。

于 2016-10-27T06:28:03.683 回答
0

据我所见,SpeakerBox 演示不执行以下提供程序方法:

https://developer.apple.com/documentation/callkit/cxprovider/1930701-reportcall

func reportCall(with UUID: UUID, 
        endedAt dateEnded: Date?, 
         reason endedReason: CXCallEndedReason)  

- (void)reportCallWithUUID:(NSUUID *)UUID endedAtDate:(nullable NSDate 
*)dateEnded reason:(CXCallEndedReason)endedReason;  

这会导致显示“呼叫失败”的 UI 屏幕 - 因为 CallKit 没有给出呼叫结束的原因,并且默认情况下似乎假定为“CXCallEndedReasonFailed”。

在请求 CXEndCallAction 事务之前调用“reportCallendedAt”以删除“呼叫失败”屏幕。

于 2017-09-05T10:09:14.170 回答
0

您是否已向 info.plist 添加了所需的权限?

在此处输入图像描述

于 2018-05-08T13:49:32.113 回答