斯威夫特/CallKit。是不是可以通过自定义 UI 通知 CallKit 接受来电?

Posted

技术标签:

【中文标题】斯威夫特/CallKit。是不是可以通过自定义 UI 通知 CallKit 接受来电?【英文标题】:Swift/CallKit. Is it possible to notify CallKit about accepting incoming call by custom UI?斯威夫特/CallKit。是否可以通过自定义 UI 通知 CallKit 接受来电? 【发布时间】:2021-01-07 12:42:58 【问题描述】:

我需要通过点击自定义 UI 按钮来接听电话。 从原生推送调用屏幕系统通过CXProviderDelegate 方法通知

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction)

但是如何通过自定义 UI 通知 CallKit?

例如我可以通过方法通知 CallKit 结束通话

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

【问题讨论】:

如果您想使用内联格式,请将代码用反引号 like this 括起来,以便其格式正确。 @AlBlue 谢谢。这是我关于***的第一个问题:) 【参考方案1】:

如果您仍然需要知道如何从自定义 UI 手动通知操作,您可以在下面找到解决方案。

无论如何,把它放在这里以供将来参考。

let answerAction: CXAnswerCallAction = CXAnswerCallAction(call: incomingCallUUID)
let transaction: CXTransaction = CXTransaction(action: answerAction)
            
callController.request(transaction)  error in
    if let error = error 
        NSLog("Error!!!")
     else 
        NSLog("Success")
    

注意:callController类型是CXCallController,incomingCallUUID是你的CXProvider在reportNewIncomingCall(with:)上报的来电UUID

【讨论】:

以上是关于斯威夫特/CallKit。是不是可以通过自定义 UI 通知 CallKit 接受来电?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有调用者 UUID 的情况下从自定义 UI 结束 CallKit 调用?

CallKit:屏幕锁定时启动应用程序

斯威夫特:UISlider轨道的一侧不圆

斯威夫特 3 |核心数据 |自定义实体

如果 TableViewCell 有大量数据要显示,则在 UITableViewCell 中添加自定义按钮的最佳方法。使用斯威夫特

以自定义垂直距离水平居中子视图|斯威夫特