我实际上是在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)
但不是在我的项目中。然后,当我挂机时,我看到:"呼叫失败"。
你有什么想法吗?
答案 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)