【发布时间】: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。