Community

닫힌 채널에 연결하려할 때 에러 처리가 제대로 안된것 같습니다

이미 닫혀있는 채널에 사용자가 연결을 시도하는 경우 어플리케이션이 강제종료 됩니다.

에러 메시지는

[SDP.encoder]
[SDPDelegator.didCreateSessionDescription] didCreateSessionDescription is called
[SDPDelegator.didSetSessionDescription] RemonState= RemonState
[SDPDelegator.didSetSessionDescription] and state: WAIT
[RemonController.onStateChange] state= 2
create Answer is completed
PeerConnectionDelegate.peerConnection to 1
[PeerConnectionDelegator.peerConnection] didGenerate RTCIceCandidate]
[PeerConnectionManager.sendAnswer] error= PeerConnection cannot create an answer in a state other than have-remote-offer or have-local-pranswer.
[SDPDelegator.didCreateSessionDescription]
(lldb)

이렇게 뜹니다. 혹시 채널이 아직 열려있는지 확인하는 API가 있나요?
아니면 제가 따로 처리해야하는 부분이 있는건가요?
onError 블록을 구현했지만 그쪽으로 핸들링이 안 되는 것 같습니다

안녕하세요.
통화의 채널이 접속가능한 상태인지, 이미 기 연결된 채널인지 확인하는 방법은

https://docs.remotemonster.com/common/channel
링크에 있는 fetchCalls() 을 사용하시면 되며, 접속이 가능한 채널의 경우
Status 값이 “WAIT” 입니다.

참여 불가능한 채널에 접속시에 발생하는 이슈에 대해서는
이번달 내로 수정할 계획입니다.

감사합니다.

답변 감사드립니다. 첨부해주신 문서에 들어가봤는데 관리가 안된건지 현재 API랑 내용이 다르네요… closure에 인자가 지금은 results array만 내려오는 것 같은데, 에러 메시지는 따로 확인이 불가능한건가요?

안녕하세요.
현재 일부 콜백이 백그라운드 쓰레드에서 호출되는 이슈가 있어 해당 문제는 다음버전에서 수정될 예정입니다.
(현재 ios sdk 버전: v2.6.8, 수정예정 버전 : v2.6.9 )
일부 콜백에서 ui 처리를 하시는 경우 이를 참고하셔서 DispatchQueue.main.async 와 같이 임시로
메인 쓰레드를 사용하도록 처리하시면 됩니다.

onError 콜백의 인자는 RemonError 값입니다.
말씀하시는 동일 채널에 접속하는 에러의 경우 아래처럼 처리하시면 됩니다.
remonCall.onError { [weak self] (error) in
switch error {
case .ConnectChannelFailed(_):
// 예외처리
break

default:
  break;

}
}

해당 내용은 github( https://github.com/RemoteMonster/ios-sdk ) 의 BaseExamples 에 업데이트해 두었으니 참고하시기 바랍니다.
감사합니다.