SDK 및 API의 알려진 문제

이 문서에서는 Azure Communication Services 통화 SDK 및 Communication Services 통화 자동화 API와 관련된 제한 사항 및 알려진 문제에 대한 정보를 제공합니다.

Important

통화 환경의 품질에 영향을 줄 수 있는 여러 요인이 있습니다. Communication Services 네트워크 구성 및 테스트 모범 사례에 대해 자세히 알아보려면 네트워크 모범 사례을 참조하세요.

웹 SDK 호출

다음 섹션에서는 Azure Communication Services JavaScript 음성 및 영상 통화 SDK와 관련된 알려진 문제에 대한 정보를 제공합니다.

Chrome M115 - 회귀

Android용 Chrome 버전 115에서는 영상 통화 시 회귀 현상이 발생했습니다. 이 버그로 인해 사용자가 이 버전의 Chrome을 사용하여 Azure Communication Services에서 전화를 걸면 그룹 및 Azure Communication Services-Microsoft Teams 통화에 나가는 비디오가 없습니다.

  • 이 회귀는 Chromium에 도입된 알려진 문제입니다.
  • 단기적인 완화를 위해 Android에서 Microsoft Edge 또는 Firefox를 사용하거나 Android에서 Google Chrome 115/116을 사용하지 않도록 사용자에게 지시합니다.

Firefox의 알려진 문제

Firefox 데스크톱 브라우저 지원은 이제 공개 미리 보기에서 사용할 수 있습니다. 알려진 문제는 다음과 같습니다.

  • 스피커 열거를 사용할 수 없음: Firefox를 사용하는 경우 앱은 Communication Services 디바이스 관리자를 통해 스피커를 열거 또는 선택할 수 없습니다. 이 시나리오에서는 운영 체제를 통해 디바이스를 선택해야 합니다.
  • 가상 카메라는 현재 Firefox 데스크톱 오디오\비디오 통화를 할 때 지원되지 않습니다.

iOS Chrome 알려진 문제

이제 iOS Chrome 브라우저 지원을 공개 미리 보기로 사용할 수 있습니다. 알려진 문제는 다음과 같습니다.

  • 브라우저를 백그라운드로 전환하거나 디바이스를 잠글 때 수신 및 발신 오디오가 없습니다. 이 문제는 iOS 버전 16.4 이상에서 해결되었습니다.
  • Bluetooth 헤드셋에서 수신/발신 오디오가 나오지 않습니다. 사용자가 Azure Communication Services 통화 중간에 bluetooth 헤드셋을 연결하면 사용자가 휴대폰을 잠그고 잠금을 해제할 때까지 스피커에서 오디오가 계속 나옵니다. 이전 iOS 버전(15.6, 15.7)에서 이 문제를 확인했으며 iOS 16에서는 재현되지 않습니다.

iOS Safari에서 카메라 미리 보기의 잘못된 해상도 크기를 표시합니다.

이 버그는 iOS 16.7 또는 iOS 17 이전 버전 17.4에서 사용자가 통화 중에 전화기를 회전하거나 비디오를 활성화/비활성화할 때 발생합니다. 카메라 미리 보기에 잘못된 해상도 크기가 잠시 표시되었다가 정상으로 돌아갑니다. 이 문제는 iOS 17.4 베타에서 재현할 수 없습니다. 여기에 관련 WebKit 버그가 있습니다.

iOS 16은 통화 중 브라우저를 백그라운드에 둘 때 버그를 도입했습니다.

iOS 16 릴리스에서는 Safari 모바일 브라우저를 사용할 때 Azure Communication Services 오디오/동영상 통화가 중지될 수 있는 버그가 발생했습니다. Apple은 이 문제를 알고 있으며 해결 방법을 찾고 있습니다. 그 영향은 통화 중에 Azure Communication Services 통화가 작동을 멈출 수 있으며 다시 작동하도록 하는 유일한 해결 방법은 최종 고객이 전화를 다시 시작하도록 하는 것입니다.

이 버그를 재현하려면:

  • iOS 16을 실행하는 iPhone을 사용하는 사용자가 있습니다.
  • Safari iOS 모바일 브라우저를 사용하여 Azure Communication Services 통화에 참여(오디오 전용 또는 오디오 및 동영상 포함)
  • 통화 중 누군가가 Safari 브라우저를 백그라운드로 전환하고 YouTube를 보거나 Bluetooth 디바이스를 통해 연결되어 있는 동안 FaceTime\phone 통화를 받는 경우

Results:

  • 이 상황이 몇 분 후에 수신 및 발신 동영상이 작동하지 않을 수 있습니다.
  • Azure Communication Services 통화가 다시 작동하도록 하는 유일한 방법은 최종 사용자가 전화를 다시 시작하도록 하는 것입니다.

Chrome M98 - 회귀

Chrome 버전 98은 대부분(70% 이상)의 사용자에게 전송된 동영상 스트림의 해상도에 부정적인 영향을 미치는 동영상 키프레임의 비정상적인 생성과 함께 회귀를 도입했습니다.

  • 이 회귀는 Chromium에 도입된 알려진 문제입니다.

PSTN 통화 중에도 사용자는 ACS 통화에서 오디오를 계속 들을 수 있습니다.

이 문제는 Android Chrome 사용자가 PSTN 통화를 수신하면 발생합니다. PSTN 통화에 응답한 후 ACS 통화의 마이크가 음소거됩니다. ACS 통화의 나가는 오디오가 음소거되므로 다른 참가자는 PSTN 통화 중인 사용자의 소리를 들을 수 없습니다. 사용자의 들어오는 오디오가 음소거되지 않으며 이 동작은 브라우저에 내재되어 있습니다.

통화 중에 들어오는 오디오 없음

경우에 따라 Azure Communication Services 통화 중인 사용자가 원격 참가자의 오디오를 듣지 못할 수 있습니다. 이 문제를 일으키는 관련 Chromium 버그가 있으며 PeerConnection을 다시 연결하여 문제를 완화할 수 있습니다. SDK 1.9.1(안정) 및 SDK 1.10.0(베타)부터 이 해결 방법을 추가했습니다.

Android Chrome에서 사용자가 Azure Communication Services 통화에 여러 번 참여하는 경우 들어오는 오디오도 사라질 수 있습니다. 사용자는 페이지를 새로 고칠 때까지 다른 참가자의 오디오를 들을 수 없습니다. SDK 1.10.1-beta.1에서 이 문제를 해결하고 오디오 리소스 사용량을 개선했습니다.

그룹 통화를 제외하고 통화 시나리오에 실패한 일부 Android 디바이스.

많은 특정 Android 디바이스가 시작, 통화 및 모임 수락에 실패합니다. 이 문제가 발생한 디바이스는 복구되지 않으며 시도할 때마다 실패합니다. 이들은 대부분 삼성 모델 A 디바이스, 특히 모델 A326U, A125U 및 A215U입니다.

  • 이 회귀는 Chromium에 도입된 알려진 문제입니다.

Android Chrome은 브라우저가 1분 동안 백그라운드로 이동하고 나면 통화를 음소거합니다.

Android Chrome에서 사용자가 Azure Communication Services 통화 중이고 브라우저를 백그라운드로 1분 동안 배치하는 경우 마이크에 액세스할 수 없게 되며 통화의 다른 참가자는 사용자의 오디오를 들을 수 없습니다. 사용자가 브라우저를 포그라운드로 가져오면 마이크를 다시 사용할 수 있습니다. 여기여기에 관련된 크롬 버그

모바일(iOS 및 Android) 사용자가 전화를 끊었지만 여전히 참가자 목록에 표시됩니다.

모바일 사용자가 Call.hangUp() API를 사용하지 않고 Azure Communication Services 그룹 통화를 나가는 경우 문제가 발생할 수 있습니다. 모바일 사용자가 브라우저를 닫거나 끊지 않고 웹 페이지를 새로 고치면 그룹 통화의 다른 참가자는 약 60초 동안 참가자 목록에서 이 모바일 사용자를 계속 볼 수 있습니다.

iOS Safari는 사용자가 다른 앱으로 이동하여 브라우저로 다시 돌아오면 페이지를 새로 고칩니다.

사용자가 iOS Safari로 Azure Communication Services 통화를 하고 잠시 동안 다른 앱으로 전환하면 문제가 발생할 수 있습니다. 사용자가 브라우저로 돌아가면 브라우저 페이지가 새로 고쳐집니다. 이는 OS가 브라우저를 종료하기 때문입니다. 이 문제를 완화하는 한 가지 방법은 일부 상태를 유지하고 페이지를 새로 고친 후 복구하는 것입니다.

그룹 통화 또는 Microsoft Teams 모임에 참여하는 iOS 15.1 사용자.

  • 들어오는 PSTN이 수신되면 통화 또는 모임이 있는 탭이 중단되는 경우가 있습니다. 관련 WebKit 버그는 여기여기에 있습니다.

iOS Safari 및 Android Chrome에서 특정 중단이 발생하면 로컬 마이크/카메라가 음소거됩니다.

이 문제는 다른 애플리케이션이나 운영 체제가 마이크나 카메라를 제어하는 경우에 발생할 수 있습니다. 다음은 사용자가 통화 중인 동안 발생할 수 있는 몇 가지 예입니다.

  • 수신 전화는 PSTN(Public Switched Telephone Network)을 통해 도착하고 마이크 디바이스 액세스를 캡처합니다.
  • 예를 들어, 사용자는 YouTube 동영상을 재생하거나 FaceTime 통화를 시작합니다. 다른 네이티브 애플리케이션으로 전환하면 마이크 또는 카메라에 대한 액세스를 캡처할 수 있습니다.
  • 사용자는 마이크에 대한 액세스를 캡처하는 Siri를 사용하도록 설정합니다.

예를 들어, iOS에서 Azure Communication Services 통화 중에 PSTN 통화가 들어오면 microphoneMutedUnexepectedly 잘못된 UFD가 발생하고 Azure Communication Services 통화에서 오디오 흐름이 중지되고 통화가 음소거된 것으로 표시됩니다. PSTN 통화가 끝나면 사용자는 Azure Communication Services 통화에서 오디오 흐름을 다시 시작하기 위해 Azure Communication Services 통화 음소거를 해제해야 합니다. Android Chrome의 경우 PSTN 호출이 들어오면 Azure Communication Services 통화에서 오디오가 흐름이 중지되고 Azure Communication Services 통화가 음소거된 것으로 표시되지 않습니다. 이 경우에는 microphoneMutedUnexepectedly UFD 이벤트가 없습니다. PSTN 통화가 완료되면 Android Chrome이 자동으로 오디오를 되찾고 Android Chrome 통화에서 오디오가 다시 정상적으로 흐르기 시작합니다.

카메라가 켜져 있는 상태에서 중단이 발생하면 Azure Communication Services 통화는 카메라가 손실되거나 그렇지 않을 수도 있습니다. 카메라를 분실하면 카메라가 꺼진 것으로 표시되며 사용자는 중단으로 인해 카메라가 해제된 후 카메라를 다시 켜야 합니다.

경우에 따라 마이크 또는 카메라 디바이스가 제시간에 해제되지 않아 원래 통화에 문제가 발생할 수 있습니다. 예를 들어, 사용자가 YouTube 동영상을 시청하는 동안 음소거 해제를 시도하거나 PSTN 통화가 동시에 활성화된 경우입니다.

사용자가 iOS 15.2 이상이고 SDK 버전 1.4.1-beta.1 이상을 사용하는 경우 들어오는 동영상 스트림의 렌더링이 중지되지 않습니다. 나가는 오디오 및 동영상을 다시 시작하려면 동영상 음소거 해제/시작 단계가 계속 필요합니다.

iOS 15.4+의 경우 대부분의 경우 오디오 및 동영상이 자동으로 복구될 수 있습니다. 일부 에지 사례에서 음소거를 해제하려면 애플리케이션에서 API를 호출하여 나가는 오디오를 복구하도록 '음소거 해제'(사용자 작업의 결과일 수 있음)해야 합니다.

사용자가 전면 카메라에서 후면 카메라로 전환하려고 하면 Safari가 설치된 iOS가 충돌하고 페이지를 새로 고칩니다.

Azure Communication Services 호출 SDK 버전 1.2.3-beta.1에는 iOS Safari에서 수행된 모든 호출에 영향을 주는 버그가 있습니다. 사용자가 카메라 동영상 스트림을 앞에서 뒤로 전환하려고 할 때 문제가 발생합니다. 카메라를 전환하면 Safari 브라우저가 충돌하고 페이지가 다시 로드됩니다.

이 문제는 SDK 버전 1.3.1-beta.1 이상을 호출하는 Azure Communication Services에서 해결되었습니다.

  • iOS Safari 버전: 15.1

macOS Ventura Safari(v16.3 이하)의 화면 공유

macOS Ventura Safari(v16.3 이하)에서는 화면 공유가 작동하지 않습니다. Safari의 알려진 문제이며 v16.4 이상에서 해결됩니다.

페이지를 새로 고치면 통화에서 사용자가 즉시 제거되지 않습니다.

사용자가 통화 중이고 페이지를 새로 고치기로 결정한 경우 Communication Services 미디어 서비스는 통화에서 이 사용자를 즉시 제거하지 않습니다. 사용자가 다시 조인할 때까지 기다립니다. 미디어 서비스 시간이 초과된 후에는 사용자가 통화에서 제거됩니다.

통화하는 동안 최종 사용자가 애플리케이션의 페이지를 새로 고칠 필요가 없는 사용자 환경을 빌드하는 것이 가장 좋습니다. 사용자가 페이지를 새로 고치면 해당 사용자가 애플리케이션으로 다시 돌아온 후 동일한 Communication Services 사용자 ID를 다시 사용합니다. 동일한 사용자 ID로 다시 조인하면 사용자는 remoteParticipants 컬렉션에서 동일한 기존 개체로 표시됩니다. 통화 중인 다른 참가자의 관점에서 볼 때 사용자는 페이지를 새로 고치는 데 걸리는 시간(최대 1~2분) 동안 통화에 남아 있습니다.

사용자가 새로 고침을 수행하기 전에 비디오를 전송한 경우 videoStreams 컬렉션은 서비스가 시간 초과되고 제거될 때까지 이전 스트림 정보를 유지합니다. 이 시나리오에서 애플리케이션은 컬렉션에 추가된 새 스트림을 관찰하고 가장 높은 id로 스트림을 렌더링하도록 결정할 수도 있습니다.

웹의 여러 디바이스에서 여러 미리 보기를 렌더링할 수 없습니다.

이 문제는 알려진 제한 사항입니다. 자세한 내용은 호출 SDK 개요를 참조하세요.

애플리케이션이 iOS 또는 iPadOS에서 실행되는 경우 Safari에서 디바이스를 열거할 수 없습니다.

애플리케이션은 Safari iOS 또는 iPadOS에서 스피커 디바이스(예: Bluetooth)를 열거하거나 선택할 수 없습니다. 이 문제는 이러한 운영 체제의 알려진 제한 사항입니다.

macOS에서 Safari를 사용하는 경우 앱은 Communication Services 디바이스 관리자를 통해 스피커를 열거하거나 선택할 수 없습니다. 이 시나리오에서는 운영 체제를 통해 디바이스를 선택해야 합니다. macOS에서 Chrome을 사용하는 경우 앱은 Communication Services 디바이스 관리자를 통해 디바이스를 열거 또는 선택할 수 있습니다.

  • iOS Safari 버전: 15.1

동영상 디바이스를 반복적으로 전환하면 동영상 스트리밍이 일시적으로 중단될 수 있습니다.

비디오 디바이스 간을 전환하면 선택한 디바이스에서 스트림을 획득하는 동안 비디오 스트림이 일시 중지될 수 있습니다. 디바이스 간을 자주 전환하면 성능이 저하될 수 있습니다. 개발자는 다른 디바이스를 시작하기 전에 하나의 디바이스 스트림을 중지하는 것이 가장 좋습니다.

iOS의 Safari에서 통화하는 동안 Bluetooth 헤드셋 마이크가 검색되지 않거나 들리지 않음

Bluetooth 헤드셋은 iOS의 Safari에서 지원되지 않습니다. Bluetooth 디바이스는 사용 가능한 마이크 옵션에 나열되지 않으며, Safari를 통해 Bluetooth를 사용하는 경우 다른 참가자가 사용자의 소리를 듣을 수 없습니다.

이 회귀는 알려진 운영 체제 제한 사항입니다. macOS 및 iOS/iPadOS의 Safari에서는 Communication Services 디바이스 관리자를 통해 스피커 디바이스를 열거하거나 선택할 수 없습니다. 이는 Safari가 스피커 열거 또는 선택을 지원하지 않기 때문입니다. 이 시나리오에서는 운영 체제를 사용하여 디바이스 선택을 업데이트합니다.

디바이스의 회전으로 비디오 품질이 떨어질 수 있습니다.

사용자가 디바이스를 회전하면 이러한 움직임으로 인해 스트리밍 중인 동영상의 품질이 저하될 수 있습니다.

이 문제는 다음 환경에서 발생합니다.

  • 영향을 받는 디바이스: Google Pixel 5, Google Pixel 3a, Apple iPad 8 및 Apple iPad X
  • 클라이언트 라이브러리: 통화(JavaScript)
  • 브라우저: Safari, Chrome
  • 운영 체제: iOS, 안드로이드

카메라 전환으로 인해 화면이 동결됩니다.

Communication Services 사용자가 JavaScript 호출 SDK를 사용하여 통화에 참가한 다음 카메라 전환 단추를 선택하면 UI가 응답하지 않을 수 있습니다. 그런 다음 사용자는 애플리케이션을 새로 고치거나 브라우저를 백그라운드로 푸시해야 합니다.

이 문제는 다음 환경에서 발생합니다.

  • 영향을 받는 디바이스: Google Pixel 4a
  • 클라이언트 라이브러리: 통화(JavaScript)
  • 브라우저: Chrome
  • 운영 체제: iOS, 안드로이드

통화가 연결 상태일 때 동영상 신호 문제

통화가 연결 중 상태인 동안 사용자가 동영상을 빠르게 켜고 끄는 경우 이 작업으로 인해 통화에 대해 획득한 스트림에 문제가 발생할 수 있습니다. 통화가 연결 중 상태에 있는 동안 동영상을 켜고 끌 필요가 없는 방식으로 앱을 빌드하는 것이 개발자에게 가장 좋습니다. 다음 시나리오에서 동영상 성능 저하가 발생할 수 있습니다.

  • 통화가 연결 중 상태인 동안 사용자가 오디오로 시작한 다음 동영상을 시작하고 중지하는 경우.
  • 통화가 로비 상태에 있는 동안 사용자가 오디오로 시작한 다음 동영상을 시작하고 중지하는 경우.

macOS 및 iOS에서 Safari용 디바이스 열거 또는 액세스

특정 환경에서는 일정 시간이 지나면 디바이스 권한이 초기화되는 것을 알 수 있습니다. macOS 및 iOS에서 Safari는 스트림을 획득하지 않는 한 오랫동안 권한을 유지하지 않습니다. 이 제한 사항을 해결하는 가장 간단한 방법은 디바이스 관리자의 디바이스 열거형 API를 호출하기 전에 DeviceManager.askDevicePermission() API를 호출하는 것입니다. 이러한 열거형 API에는 DeviceManager.getCameras(), DeviceManager.getSpeakers()DeviceManager.getMicrophones()가 포함됩니다. 권한이 있는 경우 사용자에게는 아무 것도 표시되지 않습니다. 권한이 없으면 사용자에게 권한을 다시 묻는 메시지가 표시됩니다.

이 문제는 다음 환경에서 발생합니다.

  • 영향을 받는 디바이스: iPhone
  • 클라이언트 라이브러리: 통화(JavaScript)
  • 브라우저: Safari
  • 운영 체제: iOS

원격 참가자 동영상 렌더링 지연

진행 중인 그룹 통화 중에 사용자 A가 동영상을 보낸 다음 사용자 B가 통화에 참여한다고 가정합니다. 사용자 B에게 사용자 A의 비디오가 표시되지 않거나 사용자 A의 비디오가 긴 지연 후 렌더링을 시작하는 경우가 있습니다. 네트워크 환경 구성 문제로 인해 이 지연이 발생할 수 있습니다. 자세한 내용은 네트워크 권장 사항을 참조하세요.

통화 중 타사 라이브러리를 사용하면 오디오 손실이 발생할 수 있습니다.

애플리케이션 내에서 별도로 getUserMedia를 사용하면 오디오 스트림이 손실됩니다. 타사 라이브러리가 Azure Communication Services 라이브러리에서 디바이스 액세스 권한을 인수하므로 오디오 스트림이 손실됩니다.

  • 호출 중에 내부적으로 getUserMedia API를 사용하는 타사 라이브러리를 사용하지 마세요.
  • 여전히 타사 라이브러리를 사용해야 하는 경우 오디오 스트림을 복구하는 유일한 방법은 선택한 디바이스를 변경하거나(사용자가 둘 이상인 경우) 통화를 다시 시작하는 것입니다.

이 문제는 다음 환경에서 발생합니다.

  • 브라우저: Safari
  • 운영 체제: iOS

이 문제의 원인은 동일한 디바이스에서 고유의 스트림을 획득하면 경합 상태로 실행되는 부작용이 있을 수 있습니다. 다른 디바이스에서 스트림을 가져오면 사용자가 USB/IO 대역폭이 부족할 수 있으며 sourceUnavailableError 속도가 급증합니다.

음소거/음소거 해제와 같은 특정 API를 과도하게 사용하면 Azure Communication Services 인프라에서 제한이 발생합니다.

음소거/음소거 해제 API 호출의 결과로 Azure Communication Services 인프라는 통화 중인 다른 참가자에게 음소거/음소거 해제를 호출한 로컬 참가자의 오디오 상태에 대해 알려줌으로써 통화 참가자는 누가 음소거/음소거 해제되었는지 알 수 있습니다. Azure Communication Services 인프라에서는 음소거/음소거 해제의 과도한 사용이 차단됩니다. 참가자(또는 참가자 대신 애플리케이션)가 30초 롤링 창에서 1초마다 15회 이상 지속적으로 음소거/음소거 해제를 시도하는 경우 제한이 발생합니다.

통화 자동화 API

Communication Services 통화 Automation API의 알려진 문제는 다음과 같은 제한 사항입니다.

  • 현재 서버 애플리케이션에 대해 지원되는 유일한 인증은 연결 문자열을 사용하는 것입니다.

  • 동일한 Communication Services 리소스의 엔터티 간에만 호출합니다. 리소스 간 통신이 차단됩니다.

  • Microsoft Teams의 테넌트 사용자와 Communication Services 사용자 또는 서버 애플리케이션 엔터티 간의 통화는 허용되지 않습니다.

  • 애플리케이션이 두 개 이상의 PSTN ID에 전화를 건 다음 통화를 종료하면 다른 PSTN 엔터티 간의 통화가 끊깁니다.

다음 섹션에서는 네이티브 및 네이티브 UI SDK를 호출하는 Azure Communication Services와 관련된 알려진 문제에 대한 정보를 제공합니다.

Android API 에뮬레이터

Android 5.0(API 수준 21) 및 Android 5.1(API 수준 22)에서 Android API 에뮬레이터를 사용할 때 일부 크래시가 예상됩니다.

Android Trouter 모듈 충돌

Android Chat과 Calling SDK가 동일한 애플리케이션에 함께 있는 경우 Chat SDK의 실시간 알림 기능이 작동하지 않습니다. 종속성 해결 문제가 발생할 수 있습니다.

솔루션에 대해 작업하는 동안 앱의 build.gradle 파일에 다음 종속성 정보를 추가하여 실시간 알림 기능을 해제하고 대신 GetMessages API를 폴링하여 들어오는 메시지를 사용자에게 표시할 수 있습니다.

Java

 implementation ("com.azure.android:azure-communication-chat:1.0.0") {
     exclude group: 'com.microsoft', module: 'trouter-client-android'
 }
 implementation 'com.azure.android:azure-communication-calling:1.0.0'

참고: 애플리케이션이 chatAsyncClient.startRealtimeNotifications() 또는 chatAsyncClient.addEventHandler()과 같은 알림 API를 사용하려고 하면 런타임 오류가 발생합니다.

iOS 진행 중인 비디오 화면 속 화면(PiP)

앱이 백그라운드로 전환되면 들어오는 비디오가 중지됩니다. 애플리케이션이 전경에 있으면 비디오가 올바르게 렌더링됩니다.

UI 라이브러리

GitHub 리포지토리에서 알려진 문제 Wiki 페이지를 따를 수 있습니다.