我实际上是在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)
但不是在我的项目中。然后,当我挂断电话时,我看到:“呼叫失败”。
你有主意吗?
3条答案
按热度按时间yc0p9oo01#
请确保正确配置CXProvider并设置其委托。如果未设置CXProvider的
delegate
属性,则委托将不会接收到任何要执行的操作。另外,如果你看到一个“调用失败”的UI,这可能表明你的应用程序崩溃了。我会检查崩溃日志或在调试器中运行应用程序。
t3psigkw2#
就我所见,SpeakerBox演示不执行以下提供程序方法:
https://developer.apple.com/documentation/callkit/cxprovider/1930701-reportcall
第一个
这将导致显示“Call failed”(呼叫失败)UI屏幕-因为CallKit未给出呼叫结束的原因,并且似乎默认情况下假定为“CXCallEndedReasonFailed”(CXCallEndedReasonFailed)。
在请求CXEndCallAction事务之前调用“reportCall endedAt”以删除“调用失败”屏幕。
oug3syen3#
您是否已将所需的权限添加到您的info.plist?