Я разрабатываю приложение CallKit, у меня проблема. При удержании вызова не удается перезапустить звук при «замене» вызовов на экране CallKit до тех пор, пока пользователь не вернется на экран вызова в приложении. Я могу обойти это, обновив:
supportsHolding = false
но я могу решить эту проблему, например WhatsApp может сделать это правильно!
p.s. Я звоню по webrtc!
Благодарность!
РЕДАКТИРОВАТЬ:
Это код провайдера:
public func provider(_ provider: CXProvider, perform action: CXSetHeldCallAction) {
guard let call = conductor!.callWithUUID(uuid: action.callUUID) else {
WebRtcConductor.debug("\(self.TAG) ???? failed to perform HeldAction: uuid: \(action.uuid), calluiid: \(action.callUUID)")
action.fail()
return
}
setIsHeld(call: call, isHeld: action.isOnHold)
action.fulfill()
}
функция setIsHeld просто выполняет:
audioTrack.isEnabled = enabled
Если я использую кнопку отключения звука на экране callkit, все работает нормально, но если у меня есть 2 активных вызова, когда я перехожу от вызова webrtc к обычному вызову, вызывается CXSetHeldCallAction и звуковая дорожка отключена. Если я снова проведу пальцем до вызова webrtc, звуковая дорожка включена, но я ничего не слышу, если я вернусь на главный экран приложения, звук снова будет работать нормально!