Share via


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.

Best Practices für das Azure Communication Services Web JavaScript SDK

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

JavaScript-SDK für Sprach- und Videoanrufe

Anschließen oder Aktivieren des Mikrofons über den Geräte-Manager bei laufendem Azure Communication Services-Anruf

Wenn zu Beginn eines Anrufs kein Mikrofon verfügbar ist, und dann ein Mikrofon verfügbar wird, wird das Anrufdiagnoseereignis „noMicrophoneDevicesEnumerated“ ausgelöst. In diesem Fall sollte Ihre Anwendung askDevicePermission aufrufen, um die Zustimmung des Benutzers zum Aufzählen von Geräten zu erhalten. Anschließend kann der Benutzer das Mikrofon stummschalten/die Stimmschaltung aufheben.

Löschen der Rendereransicht des Videostreams

Communication Services-Anwendungen müssen VideoStreamRendererView oder die übergeordnete VideoStreamRenderer-Instanz löschen, wenn sie nicht mehr benötigt werden.

Beenden des Aufrufs beim Ereignis onbeforeunload

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

Umgang mit mehreren Anrufen auf mehreren Registerkarten auf Mobilgeräten

Ihre Anwendung sollte eine Verbindung mit Anrufen von mehreren Browserregisterkarten nicht gleichzeitig herstellen, da dies aufgrund der Ressourcenzuordnung für Mikrofon und Kamera auf dem Gerät zu undefiniertem Verhalten führen kann. Entwicklern wird empfohlen, Anrufe grundsätzlich zu beenden, wenn sie im Hintergrund durchgeführt werden, bevor sie einen neuen Anruf starten.

Behandeln Sie den Aufruf der Stummschaltung des Betriebssystems bei eingehenden Anrufen.

Wenn während eines Azure Communication Services-Anrufs (sowohl für iOS als auch für 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 eine Aktion des Benutzers erforderlich, um die Stummschaltung aufzuheben und das Video erneut zu starten. Sie können die Benachrichtigung, dass das Mikrofon unerwartet stummgeschaltet wurde, mit dem Qualitätsereignis von microphoneMuteUnexpectedly abhören. Beachten Sie, dass Sie SDK 1.2.3-beta.1 oder höher verwenden müssen, um einen Anruf ordnungsgemäß wiederherstellen zu können.

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.

Geräteverwaltung

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. Wenn Sie dies tun, müssen Sie Ihre Medienstreams manuell löschen, 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, auch nachdem die Seite aktualisiert wurde. In diesem Szenario muss Ihre Anwendung erkennen, dass der Benutzer den Zugriff zuvor verweigert hat, und den Benutzer anweisen, den Zugriff auf einen bestimmten Gerätetyp manuell zurückzusetzen oder explizit zu gewähren.

Kamera, die von einem anderen Prozess verwendet wird

  • Wenn Sie in Windows Chrome und Windows Microsoft Edge 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, wird der Aufruf nur mit Audio und ohne Video gestartet. Ein cameraStartFailed-UFD wird ausgelöst, da die Kamera nicht gestartet werden konnte, weil sie von einem anderen Prozess verwendet wurde. Dasselbe gilt für die Videoaktivierung während des 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/Threads das Kameragerät gemeinsam nutzen.
  • Wenn ein Prozess A auf mobilen Geräten das Kameragerät anfordert, während es von Prozess B verwendet wird, übernimmt Prozess A das Kameragerät, und Prozess B beendet die Verwendung des Kamerageräts.
  • In iOS Safari kann die Kamera weder für mehrere Anrufclients auf derselben Registerkarte noch Registerkarten übergreifend eingeschaltet sein. Wenn ein Anrufclient die Kamera verwendet, übernimmt er die Kamera von einem vorherigen Anrufclient, der sie verwendet hat. Der vorherige Anrufclient empfängt ein cameraStoppedUnexpectedly-UFD.

Bildschirmfreigabe

Das Beenden einer Anwendung beendet nicht ihre Freigabe.

Nehmen wir zum Beispiel an, dass Sie in Chromium den Bildschirm der Microsoft Teams-Anwendung freigeben. Dann klicken Sie auf die Schaltfläche „X“in der Teams-Anwendung, um sie zu schließen. Die Teams-Anwendung wird nicht geschlossen und wird im Hintergrund weiterhin ausgeführt. Sie sehen sogar noch das Symbol unten rechts in der Desktopleiste. Da die Teams-Anwendung weiterhin ausgeführt wird, bedeutet dies, dass ihre Bildschirmfreigabe weiterhin besteht, und Remoteteilnehmende im Anruf sehen Ihre Teams-Anwendung weiterhin als freigegeben. Zum Beenden der Bildschirmfreigabe der Anwendung müssen Sie mit der rechten Maustaste auf das Symbol auf der Desktopleiste und dann auf „Beenden“ klicken. Alternativ können Sie auf die Schaltfläche „Freigabe beenden“ im Browser klicken. Oder Sie rufen die Call.stopScreenSharing()-API des SDKs auf.

Safari kann nur den gesamten Bildschirm freigeben

Safari ermöglicht nur die Bildschirmfreigabe des gesamten Bildschirms. Im Gegensatz zu Chromium, mit dem Sie den gesamten Bildschirm, eine bestimmte Desktop-Anwendung oder eine bestimmte Browser-Registerkarte freigeben können.

Bildschirmfreigabeberechtigungen unter macOS

Zum Ausführen der Bildschirmfreigabe in macOS Safari oder macOS Chrome müssen den Browsern im Betriebssystemmenü diese Berechtigungen für die Bildschirmaufzeichnung erteilt werden: „Systemeinstellungen“ >„Sicherheit und Datenschutz“ –> „Bildschirmaufzeichnung“.

Bewährte Methoden des nativen Azure Communication Services SDKs

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

Unterstützte Plattformen

Dies sind die Mindestanforderungen an die Betriebssystemplattform, um eine optimale Funktionalität der aufrufenden nativen SDKs 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+.

App-Anforderung von Geräteberechtigungen

Um die aufrufenden nativen SDKs zum Tätigen oder Empfangen von Anrufen zu verwenden, ist es erforderlich, jede Plattform für den Zugriff auf Geräteressourcen zu autorisieren. Als Entwickler*in sollten Sie Benutzer*innen zur Eingabe des Zugriffs auffordern und sicherstellen, dass dies aktiviert ist. Der Consumer autorisiert diese Zugriffsrechte, stellen Sie daher sicher, dass ihnen zuvor die Berechtigung erteilt wurde.

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

Konfigurieren der Protokolle

Die Implementierung der Protokollierung gemäß dem Tutorial zum Abrufen von Protokolldateien ist wichtiger als je zuvor. Detaillierte Protokolle helfen bei der Diagnose von Problemen, die für Gerätemodelle oder Betriebssystemversionen spezifisch sind, die den Mindest-SDK-Kriterien entsprechen. Wir empfehlen Entwickler*innen mit der Konfiguration der Protokoll-API zu beginnen, da das Microsoft-Supportteam ohne die Protokolle nicht beim Debuggen und bei der Problembehandlung der Aufrufe helfen kann.

Nachverfolgen der Anruf-ID

CallID ist die eindeutige ID für einen Anruf. Sie identifiziert korrelierte Ereignisse von allen Teilnehmenden und Endpunkten, die sich während eines einzelnen Anrufs verbinden. In den meisten Fällen verwenden Sie sie, um die Protokolle zu überprüfen, und das Microsoft-Supportteam fragt nach ihr, um die Problembehandlung der Anrufe durchzuführen. Sie sollten die CallID in Ihrer Telemetrie nachverfolgen, die Sie in Ihrer App konfigurieren. Sie können die Richtlinien im Handbuch zur Problembehandlung befolgen, um zu verstehen, wie Sie sie für jede Plattform abrufen.

Abonnieren der benutzerseitigen Diagnose (User Facing Diagnostics, UFD) und Medienqualitätsstatistiken

  • Benutzerseitige Diagnose (User Facing Diagnostics, UFD) kann verwendet werden, um verschiedene Eigenschaften eines Aufrufs zu untersuchen, um zu bestimmen, welches Problem während des Anrufs auftritt, das sich auf Ihre Kundschaft auswirkt.
  • Medienqualitätsstatistiken untersuchen die Metriken der Audio-, Video- und Bildschirmfreigabequalität für eingehende und ausgehende Anrufe. Es wird empfohlen, die Daten zu sammeln und nach Beendigung des Anrufs an Ihre Pipelinedatenerfassung zu senden.

Fehlerbehandlung

Wenn während des 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, um den Grund für Anruffehler zu identifizieren. Sie können sich auf das Handbuch zur Problembehandlung beziehen, um Probleme zu beheben.

Verwalten von Videostreams

Stellen Sie sicher, dass Sie VideoStreamRendererView löschen, 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äß. Stellen Sie sicher, dass alle Aufrufobjekte nach der Verwendung ordnungsgemäß gelöscht werden, um Systemressourcen freizugeben und Speicherverluste zu vermeiden. Stellen Sie sicher, dass Sie Ereignissen nicht mehr abnonnieren, um Speicherverluste zu vermeiden.

Kamera oder Mikrofon, die bzw. das von einem anderen Prozess verwendet wird

Es ist wichtig zu beachten, dass auf mobilen Geräten, wenn mehrere Prozesse gleichzeitig versuchen, auf die Kamera oder das Mikrofon zuzugreifen, der erste Prozess, der den Zugriff anfordert, die Kontrolle über das Gerät übernimmt. Dadurch verliert der zweite Prozess sofort den Zugriff.

Optimieren der APP-Größe mithilfe der UI-Bibliothek

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

Anwendungsleistung: Kleinere Bibliotheken verringern die Menge an Code, der von einer Anwendung geladen, analysiert und ausgeführt werden muss. Dies 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. Dies ist wichtig für mobile Geräte, bei denen der Arbeitsspeicher beschränkt ist. Eine geringere Speicherauslastung kann zu weniger Systemabstürzen und einer besseren Multitaskingleistung führen.

Nächste Schritte

Weitere Informationen finden Sie in den folgenden Artikeln: