【问题标题】:CallKit is not showing Incoming UI when Device is Locked设备锁定时,CallKit 不显示传入 UI
【发布时间】:2018-04-23 13:28:49
【问题描述】:

我正在开发一个 voip 应用程序,它使用 Callkit 来显示来电的系统 UI。

为了测试来电,我从我的应用中触发了它,如下所示

let callHandle = CXHandle(type: .phoneNumber, value: "+9197xxxxxxxx")
let callUpdate = CXCallUpdate()
callUpdate.remoteHandle = callHandle
callUpdate.supportsDTMF = true
callUpdate.supportsHolding = true
callUpdate.supportsGrouping = false
callUpdate.supportsUngrouping = false
callUpdate.hasVideo = false
UIApplication.shared.beginBackgroundTask {
    print("Error")
}
DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
    self.callKitProvider.reportNewIncomingCall(with: UUID(), update: callUpdate) { (error) in
        print(error)
    }
}

当应用程序处于前台时工作正常,但是当我将设备置于锁定状态时,它会抛出错误“Error Domain=com.apple.CallKit.error.incomingcall Code=3 "(null)"”

请帮忙。提前感谢!

【问题讨论】:

  • 您是否在 iPhone 中启用了“请勿打扰”并设置为始终?
  • 谢谢@AntonioM 不,它已关闭。
  • 我在后台使用 Callkit 测试了我们的应用程序,它在锁定屏幕上运行良好(因此,dispatchqueue 将不起作用)。也许iOS在进入后台和锁定屏幕后关闭应用程序,尝试iOS在使用后台任务进入后台后不关闭应用程序。其他选项是使用 Apple push 来唤醒应用程序,并在报告呼叫后,我们使用最后一个选项。
  • 谢谢,它成功了......正如你所说,这是由于不小心激活了DND。

标签: ios iphone swift callkit


【解决方案1】:

正如@AntonioM 在 cmets 中建议的那样,DND 是问题,将其关闭可以正常工作。

【讨论】:

    【解决方案2】:

    您是否设置了 info.plist?所需的后台模式 -> 请求“应用程序提供 IP 语音服务”。

    【讨论】:

    • Emm,因为它在前台工作正常,你必须设置它。过来看 CallKit.CXError public typealias _ErrorType = CXErrorCodeIncomingCallError case unknown case unentitled case callUUIDAlreadyExists case filteredByDoNotDisturb case filteredByBlockList
    • 谢谢,CallKit 没有问题,但我不小心设置了免打扰模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2015-01-03
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多