使用CallKit拨打电话

时间:2016-10-18 21:01:04

标签: swift2.3 callkit

我实际上是在swift 2.3上。 Inbound Call在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)

但不是在我的项目中。然后,当我挂机时,我看到:"呼叫失败"。

你有什么想法吗?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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"默认情况下是假定的。

致电" reportCall endsAt"在请求CXEndCallAction事务删除"呼叫失败"之前屏幕。

答案 2 :(得分:0)

您是否已将所需权限添加到info.plist中?

enter image description here