Najlepsze rozwiązania: wywoływanie zestawów SDK usług Azure Communication Services

Ten artykuł zawiera informacje o najlepszych rozwiązaniach związanych z zestawami SDK wywołujących usługi Azure Communication Services.

Najlepsze rozwiązania dotyczące zestawu SDK języka JavaScript w sieci Web usług Azure Communication Services

Ta sekcja zawiera informacje o najlepszych rozwiązaniach związanych z zestawem SDK połączeń głosowych i wideo w usługach Azure Communication Services.

Zestaw SDK połączeń głosowych i wideo w języku JavaScript

Mikrofon wtyczki lub włączanie mikrofonu z menedżera urządzeń, gdy w toku są wywoływane usługi Azure Communication Services

Jeśli na początku połączenia nie ma dostępnego mikrofonu, a następnie zostanie udostępniony mikrofon, zostanie zgłoszone zdarzenie diagnostyczne wywołania "noMicrophoneDevicesEnumerated". W takim przypadku aplikacja powinna wywołać metodę askDevicePermission w celu uzyskania zgody użytkownika na wyliczanie urządzeń. Następnie użytkownik będzie mógł wyciszyć/cofnąć wyciszenie mikrofonu.

Usuwanie widoku modułu renderowania strumienia wideo

Aplikacje usług komunikacyjnych powinny usuwać VideoStreamRendererViewwystąpienia nadrzędne VideoStreamRenderer , gdy nie są już potrzebne.

Zawieszanie wywołania przy zdarzeniu onbeforeunload

Aplikacja powinna wywoływać call.hangup , gdy onbeforeunload zdarzenie jest emitowane.

Obsługa wielu wywołań na wielu kartach na urządzeniach przenośnych

Aplikacja nie powinna łączyć się z wywołaniami z wielu kart przeglądarki jednocześnie, ponieważ może to spowodować niezdefiniowane zachowanie z powodu alokacji zasobów dla mikrofonu i aparatu na urządzeniu. Deweloperzy są zachęcani do zawsze zawieszania się wywołań po zakończeniu w tle przed rozpoczęciem nowego.

Obsługa połączenia wyciszenia systemu operacyjnego, gdy przychodzi połączenie telefoniczne.

Podczas rozmowy z usługami Azure Communication Services (zarówno dla systemów iOS, jak i Android), jeśli połączenie telefoniczne zostanie włączone lub asystent głosowy zostanie aktywowany, system operacyjny automatycznie wyciszy mikrofon użytkownika i kamerę. W systemie Android połączenie automatycznie rozłącza się i ponownie uruchamia wideo po zakończeniu połączenia telefonicznego. W systemie iOS wymaga to ponownego "wyciszenie" i "uruchom wideo". Możesz nasłuchiwać powiadomienia, że mikrofon został nieoczekiwanie wyciszony z zdarzeniem jakości .microphoneMuteUnexpectedly Pamiętaj, aby móc ponownie nawiązać połączenie prawidłowo, należy użyć zestawu SDK 1.2.3-beta.1 lub nowszego.

const latestMediaDiagnostic = call.api(SDK.Features.Diagnostics).media.getLatest();
const isIosSafari = (getOS() === OSName.ios) && (getPlatformName() === BrowserName.safari);
if (isIosSafari && latestMediaDiagnostic.microphoneMuteUnexpectedly && latestMediaDiagnostic.microphoneMuteUnexpectedly.value) {
  // received a QualityEvent on iOS that the microphone was unexpectedly muted - notify user to unmute their microphone and to start their video stream
}

Aplikacja powinna wywołać call.startVideo(localVideoStream); polecenie , aby uruchomić strumień wideo i użyć polecenia this.currentCall.unmute(); , aby cofnąć wyciszenie dźwięku.

Zarządzanie urządzeniami

Zestaw SDK usług Azure Communication Services umożliwia zarządzanie urządzeniami i operacjami multimedialnymi.

  • Aplikacja nie powinna używać natywnych interfejsów API przeglądarki, takich jak getUserMedia lub getDisplayMedia do uzyskiwania strumieni poza zestawem SDK. W przeciwnym razie należy ręcznie usunąć strumienie multimediów przed użyciem DeviceManager lub innymi interfejsami API zarządzania urządzeniami za pośrednictwem zestawu SDK usług komunikacyjnych.

Żądanie uprawnień urządzenia

Możesz zażądać uprawnień urządzenia przy użyciu zestawu SDK:

  • Aplikacja powinna używać DeviceManager.askDevicePermission do żądania dostępu do urządzeń audio i/lub wideo.
  • Jeśli użytkownik odmówi dostępu, DeviceManager.askDevicePermission zwróci wartość "false" dla danego typu urządzenia (audio lub wideo) podczas kolejnych wywołań, nawet po odświeżeniu strony. W tym scenariuszu aplikacja musi wykryć, że użytkownik wcześniej odmówił dostępu, i poinstruować użytkownika o ręcznym zresetowaniu lub jawnym udzieleniu dostępu do danego typu urządzenia.

Aparat używane przez inny proces

  • W przeglądarce Windows Chrome i Windows Edge, jeśli uruchomisz/dołączysz/zaakceptujesz połączenie z wideo, a urządzenie aparatu jest używane przez inny proces inny niż przeglądarka, w której działa zestaw SDK sieci Web, połączenie zostanie uruchomione tylko z dźwiękiem i bez wideo. AparatStartFailed UFD zostanie podniesiony, ponieważ aparat nie może uruchomić się, ponieważ był używany przez inny proces. To samo dotyczy włączania wideo w połowie połączenia. Aparat można wyłączyć w innym procesie, tak aby proces zwalniał urządzenie aparatu, a następnie ponownie uruchomić wideo z połączenia i wideo włączy teraz dla wywołania, a uczestnicy zdalni zaczną widzieć wideo.
  • Nie jest to problem w przeglądarce macOS Chrome ani macOS Safari, ponieważ system operacyjny pozwoli procesom/wątkom udostępniać urządzenie aparatu.
  • Na urządzeniach przenośnych, jeśli procesA żąda urządzenia aparatu i jest używany przez ProcesB, procesA wyprzedzi urządzenie aparatu i ProcesB przestanie korzystać z urządzenia aparatu
  • W przeglądarce safari systemu iOS nie można włączyć aparatu dla wielu klientów połączeń na tej samej karcie ani na kartach. Gdy dowolny klient wywołania używa aparatu, wyprzedzi aparat z dowolnego poprzedniego klienta wywołania, który go używał. Poprzedni klient wywołania otrzyma aparat CameraStoppedUnexpectedly UFD.

Udostępnianie ekranu

Zamykanie aplikacji nie uniemożliwia udostępniania jej

Załóżmy na przykład, że na ekranie Chromium udostępniasz aplikację Microsoft Teams. Następnie kliknij przycisk "X" w aplikacji Teams, aby go zamknąć. Aplikacja Teams nie zostanie zamknięta i będzie nadal działać w tle. Ikona nadal będzie widoczna w prawym dolnym rogu paska pulpitu. Ponieważ aplikacja Teams jest nadal uruchomiona, oznacza to, że nadal jest udostępniany ekran, a uczestnik zdalny wywołania nadal może zobaczyć, że aplikacja Teams jest udostępniana. Aby zatrzymać udostępnianie zawartości ekranu aplikacji, musisz kliknąć prawym przyciskiem myszy jej ikonę na pasku pulpitu, a następnie kliknąć polecenie Zamknij. Możesz też kliknąć przycisk "Zatrzymaj udostępnianie" w przeglądarce. Możesz też wywołać interfejs API Call.stopScreenSharing() zestawu SDK.

Przeglądarka Safari może udostępniać tylko pełny ekran

Przeglądarka Safari umożliwia udostępnianie całego ekranu tylko na ekranie. W przeciwieństwie do chromium, który umożliwia udostępnianie pełnego ekranu, określonej aplikacji klasycznej lub konkretnej karty przeglądarki.

Uprawnienia do udostępniania ekranu w systemie macOS

Aby można było udostępniać ekrany w przeglądarce Safari lub macOS Chrome, uprawnienia do nagrywania ekranu muszą zostać przyznane przeglądarkom w menu systemu operacyjnego: "Preferencje systemowe" — "Zabezpieczenia i prywatność" —>> "Nagrywanie ekranu".

Następne kroki

Aby uzyskać więcej informacji, zobacz następujące artykuły: