CallKit не отображает входящий пользовательский интерфейс, когда устройство заблокировано

Я разрабатываю приложение voip, которое использует Callkit для отображения пользовательского интерфейса системы для входящих вызовов.

Чтобы проверить входящий звонок, я запустил его из своего приложения, как показано ниже.

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) «»

Пожалуйста помоги. Спасибо в Adavance!


person Kishore Kumar Elanchezhiyan    schedule 23.04.2018    source источник
comment
У вас активен режим «Не беспокоить» в iPhone и установлен ли он на «Всегда»?   -  person AntonioM    schedule 24.04.2018
comment
Спасибо @AntonioM Нет, он выключен.   -  person Kishore Kumar Elanchezhiyan    schedule 25.04.2018
comment
Я тестировал наше приложение с Callkit в фоновом режиме, и оно хорошо работает с экраном блокировки (поэтому диспетчерская очередь не работает). Возможно, iOS закроет приложение после перехода в фоновый режим и заблокирует экран, попробуйте, чтобы iOS не закрывала приложение после перехода в фоновый режим с использованием фоновых задач. Другой вариант - использовать Apple push, чтобы разбудить приложение, а после сообщения о звонке мы используем последний вариант.   -  person AntonioM    schedule 25.04.2018
comment
Спасибо, сработало ... Как вы сказали, это произошло из-за случайной активации режима "Не беспокоить".   -  person Kishore Kumar Elanchezhiyan    schedule 26.04.2018


Ответы (2)


DND был проблемой, как предположил @AntonioM в комментариях, отключение работает нормально.

person Kishore Kumar Elanchezhiyan    schedule 26.04.2018

Вы установили info.plist? Требуемые фоновые режимы -> Запрошено «Приложение предоставляет услуги передачи голоса по IP».

person oldold    schedule 04.05.2018
comment
Эмм, так как он отлично работает на переднем плане, вы, должно быть, установили его. Посмотрите на CallKit.CXError public typealias _ErrorType = CXErrorCodeIncomingCallError случай неизвестный случай без названия случай callUUIDAlreadyExists case filterByDoNotDisturb case filterByBlockList - person oldold; 04.05.2018
comment
Спасибо, но с CallKit проблем не было, но я случайно установил режим «Не беспокоить». - person Kishore Kumar Elanchezhiyan; 05.05.2018