#ios #objective-c #swift #iphone #callkit
#iOS #objective-c #swift #iPhone #callkit
Вопрос:
В моем приложении есть функция автоматического ответа. Когда я получаю входящий вызов и приложение работает в фоновом режиме, после интервала автоматического ответа (т.Е. 5 секунд) Я создаю CXAnswerCallAction с соответствующим UUID вызова и запрашиваю транзакцию. Я получаю эту ошибку.
Error Domain=com.apple.CallKit.error.requesttransaction Code=6 "(null)"
Согласно документации Apple
Код 6 — CXErrorCodeRequestTransactionErrorInvalidAction
Он работал раньше, но внезапно перестал работать. Можем ли мы что-нибудь сделать? Любая помощь, связанная с проблемой, действительно ценится.
Комментарии:
1. До чего это работало?
2. @Marco это работало до iOS 13.2
3. Неужели никто не может ответить на этот вопрос?
Ответ №1:
Способ исправить это заключается в том, что вы должны воспроизводить аудио перед вызовом CXCallController.request(:), когда ваше приложение работает в фоновом режиме. Вы даже можете воспроизвести тихий звук на секунду, если хотите. Это не обязательно должен быть слышимый звук.
Если это не сработает, вы можете попробовать использовать dispatch async
с задержкой в 0,1 секунды для вызова
CXCallController.request(:)
Идея в том, что вам нужно убедиться, что звуковой движок активен при вызове CXCallController.request(:)
Ответ №2:
вы можете использовать приведенный ниже код для выполнения асинхронной отправки
let answerAction: CXAnswerCallAction = CXAnswerCallAction(call: uuid)
let transaction: CXTransaction = CXTransaction(action: answerAction)
let when = DispatchTime.now() 0.1
DispatchQueue.main.asyncAfter(deadline: when) {
print("answering call")
self.callKitCallController.request(transaction, completion: { error in
if (error != nil)
{
print("did answer")
answerAction.fulfill()
}
else
{
print("answer failed: (String(describing: error?.localizedDescription))")
}
})
}
Комментарии:
1. Работает ли этот код, когда приложение работает в фоновом режиме?
2. извините, но я попробовал этот код, и он не работает в фоновом или заблокированном состоянии