Kakao i ConnectLive Q&A 게시판

복수의 스피커모드 remonCast 중 하나 close시 다른 remonCast가 스피커모드 해제되는 현상

안녕하세요, 라이브하이브 류준호입니다.

현재 저희 서비스에서는 여러 개의 RemonCast 객체를 한 클라이언트에서 다룰 때가 있는데요.
예를 들면, 저희는 스피커모드를 디폴트로 설정해놓은 상황에서, 하나의 RemonCast 객체는 create하고, 다른 하나는 join하는 식으로 이루어집니다.
이때 create한 객체를 close했을 때에 다른 객체가 영향을 받아, 스피커모드가 해제되고 수화기로 출력되는 현상이 나타나고 있습니다.

화요일 저녁쯤에 여쭤봤을 때에는, AVAudioSession category를 본래의 설정으로 덮어쓰면 된다고 하셔서,
현재 온갖 callback 이벤트에서 덮어써보았으나 문제 지점에서는 변화가 없는 것으로 보입니다. (이미 떠있는 RemonCast객체여서인지… AVAudioSession.sharedInstance()의 값들을 찍어봐도 실제로 변화하는 값을 찾을 수 없기도 하였습니다.)

참고로, 콜백들에 다음과 같은 코드들을 넣어 시도해봤습니다.
RemonClient.setAudioSessionConfiguration(category: .playAndRecord,
mode: .default,
options: [.mixWithOthers, .allowBluetooth, .defaultToSpeaker])
do {
try AVAudioSession.sharedInstance().setCategory(.playAndRecord,
mode: .default,
options: [.mixWithOthers, .allowBluetooth, .defaultToSpeaker])
try AVAudioSession.sharedInstance().setActive(true, options: [])
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
} catch {
print(error)
}
혹시나 하여 가이드 상에 있는 옵션들로도 시도해보았습니다. (category: .playAndRecord, mode: .videoChat, options: []) 그러나 잘 해결되지 않아 질문드립니다.

기존에 떠있던 RemonCast 객체가 스피커모드 해제되는 경우, 이를 어떻게 스피커모드로 돌려놓을 수 있는지 그 해결방법이 궁금합니다. 최근에 관련해 해결하신 방법에 대해 코드레벨로 공유가 가능하다면 부탁드리겠습니다. 감사합니다.

해당 문제가 발생하는 상황과 동일한 시나리오를 사용하지 않아 정확한 이슈는 확인할 수 없습니다.

컨퍼런스와 같이 여러 피어를 사용하는 환경에서는 아래와 같은 시나리오를 사용하니 참고하시기 바랍니다.
SDK v2.7.10 버전에서 사용 가능한 메쏘드.
RemonClient.setAudioSessionWithCurrentCategory()

컨퍼런스에서는 아래와 같은 시나리오로 구성됩니다.

  1. 기본 오디오 세션 설정 : RemonClient.setAudioSessionConfiguration( … )
  2. 각 피어 접속(onComplete)시 RemonClient.setAudioSessionWithCurrentCategory () 호출

네, 대표님. 답변 주신 걸 최대한 활용해서, 온갖 콜백에서 설정 시도해보았으나, 해결이 되지 않았습니다.

사실 저희가 아직 못 찾은 부분은, 스피커모드가 해제되는 이유인데요. AVAudioSession.sharedInstance의 값들을 찍어봤을 때 달라지는 값을 찾지 못했습니다.
Conference 관련해 비슷한 작업하실 때에, 어떤 값이 달라져서 추가 처리를 하셨는지 궁금합니다.

아울러, 가능하다면 RemonCast의 경우에 위와 같은 현상이 발생하는 배경 설명도 부탁드리겠습니다.
그리고 저희가 어떤 부분을 보면, 스피커모드 해제(또는 음량의 급격한 감소) 순간을 감지할 수 있는지 궁금합니다.

바쁘시겠지만 최대한 답변을 부탁드리겠습니다.
감사합니다.