Freigeben über


Bewährte Methoden: Azure Communication Services Calling SDKs

Dieser Artikel enthält Informationen zu Best Practices im Zusammenhang mit den Azure Communication Services Calling SDKs.

Bewährte Methoden für das Calling Web SDK von Azure Communication Services

Dieser Abschnitt enthält Informationen zu bewährten Methoden im Zusammenhang mit dem Calling Web SDK (JavaScript) von Azure Communication Services für Sprach- und Videoanrufe.

Schließen Sie ein Mikrofon an, oder aktivieren Sie ein Mikrofon im Geräte-Manager, wenn ein Anruf läuft.

Wenn zu Beginn eines Azure Communication Services-Anrufs kein Mikrofon verfügbar ist und dann ein Mikrofon verfügbar wird, löst die Änderung das Diagnoseereignis noMicrophoneDevicesEnumerated aus. Wenn dieses Ereignis eintritt, muss Ihre Anwendung askDevicePermission aufrufen, um die Benutzereinwilligung zum Aufzählen von Geräten zu erhalten. Der Benutzer kann das Mikrofon dann stummschalten oder die Stummschaltung aufheben.

Entfernen von VideoStreamRendererView

Communication Services-Anwendungen sollten VideoStreamRendererView oder die übergeordnete VideoStreamRenderer-Instanz entfernen, wenn sie nicht mehr benötigt werden.

Beenden des Aufrufs bei einem onbeforeunload-Ereignis

Ihre Anwendung sollte call.hangup aufrufen, wenn das Ereignis onbeforeunload ausgegeben wird.

Umgang mit mehreren Anrufen auf mehreren Registerkarten

Ihre Anwendung sollte auf mobilen Geräten keine Verbindung mit Anrufen von mehreren Browserregisterkarten gleichzeitig herstellen. Diese Situation kann aufgrund der Ressourcenzuordnung für das Mikrofon und die Kamera auf einem Gerät zu undefiniertem Verhalten führen. Entwicklern wird empfohlen, Anrufe grundsätzlich zu beenden, wenn sie im Hintergrund durchgeführt werden, bevor sie einen neuen Anruf starten.

Behandeln des Stummschaltens eines Anrufs durch das Betriebssystem bei einem eingehenden Telefonanruf

Wenn während eines Azure Communication Services-Anrufs (sowohl auf iOS als auch auf Android) ein Telefonanruf eingeht oder ein Sprach-Assistent aktiviert wird, schaltet das Betriebssystem das Mikrofon und die Kamera des Benutzers automatisch stumm. Unter Android wird die Stummschaltung des Anrufs automatisch aufgehoben und das Video nach Beendigung des Telefonats neu gestartet. Unter iOS ist zum Aufheben der Stummschaltung und für einen Neustart des Videos eine Benutzeraktion erforderlich.

Sie können auf die Benachrichtigung, dass das Mikrofon unerwartet stummgeschaltet wurde, mit dem Qualitätsereignis von microphoneMuteUnexpectedly lauschen. Beachten Sie, dass Sie für einen ordnungsgemäßen erneuten Beitritt zu einem Aufruf das SDK 1.2.3-beta.1 oder höher verwenden müssen.

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
}

Ihre Anwendung sollte call.startVideo(localVideoStream); aufrufen, um einen Videostream zu starten, und this.currentCall.unmute(); verwenden, um die Audiostummschaltung aufzuheben.

Verwalten von Geräten

Sie können das Azure Communication Services SDK verwenden, um Ihre Geräte und Medienvorgänge zu verwalten.

Ihre Anwendung sollte keine nativen Browser-APIs wie getUserMedia oder getDisplayMedia verwenden, um Streams außerhalb des SDK zu erhalten. In diesem Fall müssen Sie Ihre Medienströme manuell verwerfen, bevor Sie DeviceManager oder andere Geräteverwaltungs-APIs über das Communication Services SDK verwenden.

Anfordern von Geräteberechtigungen

Sie können Geräteberechtigungen mithilfe des SDK anfordern. Ihre Anwendung sollte DeviceManager.askDevicePermission zum Anfordern des Zugriffs auf Audio- und/oder Videogeräte verwenden.

Wenn der Benutzer den Zugriff verweigert, gibt DeviceManager.askDevicePermission bei nachfolgenden Anrufen false für einen bestimmten Gerätetyp (Audio oder Video) zurück, selbst nachdem die Seite aktualisiert wurde. In diesem Szenario muss Ihre Anwendung Folgendes ausführen:

  1. Erkennen, dass der Benutzer den Zugriff zuvor verweigert hatte
  2. Den Benutzer anweisen, den Zugriff auf einen bestimmten Gerätetyp manuell zurückzusetzen oder explizit zu gewähren

Verwalten des Verhaltens einer Kamera, die von einem anderen Prozess verwendet wird

  • In Windows Chrome und Windows Microsoft Edge: Wenn Sie einen Anruf mit Video starten, ihm beitreten oder ihn annehmen und das Kameragerät von einem anderen Prozess als dem Browser verwendet wird, in dem das Web-SDK ausgeführt wird, startet der Aufruf nur mit Audio und ohne Video. Ein cameraStartFailed-Flag für die benutzerseitige Diagnose wird ausgelöst, da die Kamera nicht gestartet werden konnte.

    Dasselbe gilt für die Videoaktivierung während eines Anrufs. Sie können die Kamera im anderen Prozess ausschalten, sodass dieser Prozess das Kameragerät freigibt. Starten Sie dann das Video erneut vom Anruf aus. Das Video wird jetzt für den Anruf eingeschaltet, und Remoteteilnehmende sehen Ihr Video.

    Dies ist weder in macOS Chrome noch in macOS Safari ein Problem, da das Betriebssystem es ermöglicht, dass Prozesse und Threads das Kameragerät gemeinsam nutzen.

  • Auf mobilen Geräten: Wenn ProcessA das Kameragerät anfordert, während ProcessB es verwendet, übernimmt ProcessA das Kameragerät, und ProcessB beendet die Verwendung.

  • In iOS Safari: Die Kamera kann weder für mehrere Anrufclients auf derselben Registerkarte noch auf unterschiedlichen Registerkarten eingeschaltet sein. Wenn ein Anrufclient die Kamera verwendet, übernimmt er die Kamera von einem vorherigen Anrufclient, der sie verwendet hat. Der vorherige Anrufclient erhält ein cameraStoppedUnexpectedly-Flag für die benutzerseitige Diagnose.

Verwalten der Bildschirmfreigabe

Das Schließen einer Anwendung beendet nicht ihre Freigabe.

Angenommen, Sie geben in Chromium den Bildschirm der Microsoft Teams-Anwendung frei. Anschließend wählen Sie die Schaltfläche X in der Teams-Anwendung aus, um sie zu schließen. Obwohl das Fenster geschlossen ist, wird die Teams-Anwendung weiterhin im Hintergrund ausgeführt. Das Symbol wird weiterhin auf der Desktop-Taskleiste angezeigt. Da die Teams-Anwendung noch ausgeführt wird, ist sie weiterhin für Remoteteilnehmende freigegeben.

Um eine Bildschirmfreigabe der Anwendung zu verhindern, müssen Sie eine der folgenden Aktionen ausführen:

  • Klicken Sie mit der rechten Maustaste auf das Symbol der Anwendung auf der Desktop-Taskleiste, und wählen Sie dann Beenden aus.
  • Wählen Sie die Schaltfläche Freigabe beenden im Browser aus.
  • Rufen Sie den API-Vorgang Call.stopScreenSharing() des SDK auf.

In Safari ist nur die Vollbildfreigabe möglich.

Safari ermöglicht die Bildschirmfreigabe nur für den gesamten Bildschirm. Dies steht im Gegensatz zu Chromium, mit dem Sie den gesamten Bildschirm, eine bestimmte Desktop-Anwendung oder eine bestimmte Browserregisterkarte freigeben können.

Sie können Bildschirmfreigabeberechtigungen unter macOS zuweisen.

Um die Bildschirmfreigabe in macOS Safari oder macOS Chrome zu nutzen, weisen Sie den Browsern im Betriebssystemmenü die erforderlichen Berechtigungen zu: Systemeinstellungen>Sicherheit und Datenschutz>Bildschirmaufzeichnung.

Bewährte Methoden für das Calling Native SDK von Azure Communication Services

Dieser Abschnitt enthält Informationen zu bewährten Methoden im Zusammenhang mit dem Calling Native SDK von Azure Communication Services für Sprach- und Videoanrufe.

Unterstützte Plattformen

Im Folgenden finden Sie die Mindestanforderungen an die Betriebssystemplattform, um eine optimale Funktionalität des Calling Native SDK sicherzustellen.

  • Unterstützung für iOS 10.0 und höher zur Erstellungszeit und iOS 12.0 und höher zur Laufzeit
  • Xcode 12.0 oder höher
  • Unterstützung für iPadOS 13.0+

Überprüfen der Geräteberechtigungen für App-Anforderungen

Um das Calling Native SDK zum Tätigen oder Annehmen von Anrufen zu verwenden, muss jede Plattform für den Zugriff auf Geräteressourcen autorisiert werden. Als Entwickler müssen Sie den Benutzer zum Zugriff auffordern und sicherstellen, dass Berechtigungen aktiviert sind. Der Consumer autorisiert diese Zugriffsrechte, stellen Sie daher sicher, dass ihnen derzeit diese Berechtigung zugewiesen sind.

  • NSMicrophoneUsageDescription für den Mikrofonzugriff
  • NSCameraUsageDescription für den Kamerazugriff

Konfigurieren der Protokolle

Die Implementierung der Protokollierung, wie im Tutorial zum Abrufen von Protokolldateien beschrieben, ist von entscheidender Bedeutung. Detaillierte Protokolle helfen bei der Diagnose von Problemen, die für Gerätemodelle oder Betriebssystemversionen spezifisch sind, die den Mindestkriterien des SDK entsprechen. Entwicklern wird empfohlen, Protokolle mithilfe der Logs API zu konfigurieren. Ohne die Protokolle kann das Microsoft-Supportteam nicht beim Debuggen und der Problembehandlung für die Anrufe helfen.

Nachverfolgen der Anruf-ID (CallID)

CallID ist die eindeutige ID für einen Anruf. Sie kennzeichnet korrelierte Ereignisse aller Teilnehmer bzw. Teilnehmerinnen und Endpunkte, die während eines einzelnen Anrufs eine Verbindung herstellen. In den meisten Fällen verwenden Sie sie, um die Protokolle zu überprüfen. Das Microsoft-Supportteam fordert sie an, um Sie bei der Problembehandlung bei Anrufen zu unterstützen.

Sie sollten den CallID-Wert in den Telemetriedaten nachverfolgen, die Sie in Ihrer App konfigurieren. Um zu erfahren, wie der Wert für jede Plattform abgerufen wird, befolgen Sie die Anweisungen im Leitfaden zur Problembehandlung.

Abonnieren von benutzerseitiger Diagnose und Medienqualitätsstatistiken

Sie können die folgenden Azure Communication Services-Features verwenden, um die Benutzererfahrung zu verbessern:

  • Benutzerseitige Diagnose: Untersuchen Sie die Eigenschaften eines Aufrufs, um die Ursache von Problemen zu ermitteln, die sich auf Ihre Kunden auswirken.
  • Medienqualitätsstatistiken: Untersuchen Sie die Metriken zur Audio-, Video- und Bildschirmfreigabequalität für ein- und ausgehende Anrufe. Es wird empfohlen, die Daten zu sammeln und nach Beendigung eines Anrufs an Ihre Pipelinedatenerfassung zu senden.

Verwalten der Fehlerbehandlung

Wenn während eines Aufrufs oder der Implementierung Fehler auftreten, geben die Methoden Fehlerobjekte zurück, die Fehlercodes enthalten. Es ist wichtig, diese Fehlerobjekte für die ordnungsgemäße Fehlerbehandlung und das Anzeigen von Warnungen zu verwenden. Die Anrufzustände geben auch Fehlercodes zurück, die beim Ermitteln der Gründe für Anruffehler helfen. Sie können sich auf den Leitfaden zur Problembehandlung beziehen, um Probleme zu beheben.

Verwalten von Videostreams

Stellen Sie sicher, dass Sie VideoStreamRendererView verwerfen, wenn das Video nicht mehr auf der Benutzeroberfläche angezeigt wird. Verwenden Sie VideoStreamType, um den Typ des Datenstroms zu bestimmen.

Allgemeine Speicherverwaltung

Ordnen Sie Ressourcen vorab zu. Initialisieren Sie den aufrufenden Client und alle erforderlichen Ressourcen während der Startphase Ihrer App und nicht erst bei Bedarf. Dieser Ansatz reduziert die Latenz beim Starten eines Anrufs.

Löschen Sie ordnungsgemäß. Löschen Sie alle Aufrufobjekte nach der Verwendung, um Systemressourcen freizugeben und Speicherverluste zu vermeiden. Stellen Sie sicher, dass Sie Ereignisse nicht mehr abonnieren, die zu Speicherlecks führen können.

Überlegungen zum Zugriff von Prozessen auf die Kamera oder das Mikrofon

Wenn auf mobilen Geräten mehrere Prozesse gleichzeitig versuchen, auf die Kamera oder das Mikrofon zuzugreifen, übernimmt der erste Prozess, der den Zugriff anfordert, die Kontrolle über das Gerät. Dadurch verliert der zweite Prozess sofort den Zugriff darauf.

Optimieren der Bibliotheksgröße

Die Optimierung der Größe von Bibliotheken in der Softwareentwicklung ist aus folgenden Gründen von entscheidender Bedeutung, insbesondere wenn Anwendungen immer komplexer und ressourcenintensiver werden:

  • Anwendungsleistung: Kleinere Bibliotheken verringern die Menge an Code, den eine Anwendung laden, parsen und ausführen muss. Diese Reduzierung kann die Startzeit und die Gesamtleistung Ihrer Anwendung erheblich verbessern, insbesondere auf Geräten mit begrenzten Ressourcen.

  • Speicherauslastung: Durch die Minimierung der Bibliotheksgröße können Sie den Speicherbedarf einer Anwendung verringern. Diese Reduzierung ist wichtig für mobile Geräte, bei denen der Arbeitsspeicher oftmals beschränkt ist. Eine geringere Speicherauslastung kann zu weniger Systemabstürzen und einer besseren Multitaskingleistung führen.

Weitere Informationen finden Sie unter: