SDK 和 API 中的已知問題
這些文章會針對與 Azure 通訊服務通話 SDK 和通訊服務通話自動化 API 相關的限制與已知問題提供相關資訊。
重要
有許多因素會影響通話體驗品質。 若要深入了解通訊服務網路設定和測試的最佳做法,請參閱網路建議。
呼叫 Web SDK
下列各節提供與 Azure 通訊服務 JavaScript 語音和視訊通話 SDK 相關聯之已知問題的相關信息。
Chrome M115 - 迴歸
適用於 Android 的 Chrome 版本 115 引進了進行視訊通話的問題迴歸 - 此錯誤會導致使用者在 Azure 通訊服務上呼叫此版本的 Chrome 時,群組和 Azure 通訊服務-Microsoft Teams 通話中不會傳出視訊。
- 此迴歸是 Chromium 上引進的已知問題
- 作為短期風險降低措施,請指示使用者在 Android 上使用 Microsoft Edge 或 Firefox,或避免在 Android 上使用 Google Chrome 115/116
Firefox 已知問題
Firefox 桌面瀏覽器支援現已可取得公開預覽版。 已知問題包括:
- 無法使用列舉說話者:如果您使用 Firefox,應用程式無法透過通訊服務設備管理器列舉或選取說話者。 在此案例中,您必須透過作業系統選取裝置。
- Firefox 桌面音訊\視訊通話目前不支援虛擬相機。
iOS Chrome 已知問題
iOS Chrome 瀏覽器支援現已可取得公開預覽版。 已知問題包括:
- 將瀏覽器切換至背景或鎖定裝置時,不會傳出和傳入音訊。 此問題已在 iOS 16.4+版中修正。
- 藍牙耳機無法傳入/傳出音訊。 當使用者在 Azure 通訊服務通話中連線藍牙耳機麥克風時,音訊仍會從喇叭傳出,直到使用者鎖定並解除鎖定電話為止。 我們已在舊版 iOS 版本 (15.6, 15.7) 上發現此問題,且無法在 iOS 16 上重現。
iOS Safari 顯示相機預覽的解析度大小不正確
在早於 17.4 之前的 iOS 16.7 或 iOS 17 版本中,當使用者在通話期間旋轉手機或啟用/停用視訊時會發生此錯誤。 相機預覽會短暫顯示不正確的解析度大小,然後再回到正常狀態。 此問題無法在 iOS 17.4 Beta 上重現。 相關 WebKit 錯誤可參閱此處。
在通話期間將瀏覽器移至背景時,iOS 16 會產生錯誤 (bug)
iOS 16 版本產生了一個錯誤,在使用 Safari 行動瀏覽器時會停止 Azure 通訊服務音訊\視訊通話。 Apple 已知悉此問題,目前正在尋找他們那一端的修正程式。 此錯誤的可能影響是,Azure 通訊服務通話可能會在通話期間停止運作,而要讓其重新運作的唯一解決方法是讓終端客戶將電話重新開機。
若要重現此錯誤:
- 找一位使用 iPhone 且執行 iOS 16 的使用者
- 使用 Safari iOS 行動瀏覽器加入 Azure 通訊服務通話 (只進行音訊通話或是同時進行音訊和視訊通話)
- 如果通話期間有人將 Safari 瀏覽器移至背景並觀看 YouTube,或在透過藍牙裝置連線時收到 FaceTime\來電
結果:
- 在這種情況幾分鐘後,傳入和傳出的視訊可能會停止運作。
- 若要讓 Azure 通訊服務通話再次運作,唯一的方法是讓終端使用者將電話重新開機。
Chrome M98 - 迴歸
Chrome 第 98 版引入了錯誤迴歸,視訊主要畫面格產生有異常,因而對大部分 (70% 以上) 使用者所傳送的視訊串流解析度造成負面影響。
- 此迴歸是 Chromium 上引進的已知問題
在 PSTN 通話中,使用者仍會聽到來自 ACS 通話的音訊
當 Android Chrome 使用者接到傳入 PSTN 通話時會發生此問題,在接聽 PSTN 通話之後,ACS 通話中的麥克風會變成靜音。 ACS 通話的傳出音訊會遭到靜音,因此其他參與者無法聽到 PSTN 通話的使用者說話。 值得注意的是,使用者的傳入音訊不會靜音,而且這是瀏覽器的既有行為。
通話期間沒有傳入音訊
Azure 通訊服務通話中的使用者有時無法聽到遠端參與者的音訊。 此問題是由一個相關的 Chromium 錯誤所導致,可藉由重新連線 PeerConnection 來緩解此問題。 我們已新增此因應措施,因為 SDK 1.9.1 (穩定)和 SDK 1.10.0 (beta)。
在 Android Chrome 上,如果使用者加入 Azure 通訊服務呼叫數次,傳入音訊也可能消失。 在重新整理頁面之前,使用者無法聽到來自其他參與者的音訊。 我們已在 SDK 1.10.1-beta.1 中修正此問題,並改善音訊資源使用量。
某些 Android 裝置有通話失敗案例,但群組通話除外。
許多特定的 Android 裝置無法啟動、接受通話和會議。 遇到此問題的裝置不會復原,而且每次嘗試時都會失敗。 這些大多是 Samsung A 型號裝置,特別是 A326U、A125U 和 A215U 型號。
- 此迴歸是 Chromium 上引入的已知問題。
Android Chrome 在瀏覽器進入背景一分鐘後將通話設為靜音
在 Android Chrome 上,如果使用者正在進行 Azure 通訊服務通話,並將瀏覽器置於背景一分鐘時, 麥克風會失去存取權,導致通話中的其他參與者無法聽到使用者的音訊。 一旦使用者將瀏覽器恢復至前景,麥克風就會再次可供使用。 相關的 Chromium 錯誤可參閱此處和此處
行動裝置 (iOS 和 Android) 使用者已掛斷通話,但仍會顯示在參與者清單上。
如果行動使用者未使用 Call.hangUp() API 離開 Azure 通訊服務群組通話,就會發生此問題。 當行動使用者關閉瀏覽器或重新整理網頁而未掛斷時,群組通話中其他參與者的參與者清單中仍會顯示此行動使用者約 60 秒。
如果使用者移至另一個應用程式再返回瀏覽器,iOS Safari 會重新整理頁面
如果 Azure 通訊服務中的使用者透過 iOS Safari 通話,並切換至其他應用程式一段時間,就會發生此問題。 使用者返回瀏覽器之後,瀏覽器頁面可能會重新整理。 這是因為作業系統會終止瀏覽器。 緩解此問題的其中一種方法是保留部分狀態,並在頁面重新整理之後復原。
iOS 15.1 使用者加入群組通話或 Microsoft Teams 會議。
當 iOS Safari 和 Android Chrome 上發生特定中斷時,本機麥克風/相機會靜音。
如果另一個應用程式或作業系統接管麥克風或相機的控制權,就會發生此問題。 以下是使用者在通話時可能會發生的一些範例:
- 來電透過 PSTN (公用交換電話網路) 抵達,並獲得麥克風裝置的存取權。
- 使用者播放 YouTube 影片 (舉例),或啟動 FaceTime 通話。 切換至另一個原生應用程式可以獲得麥克風或相機的存取權。
- 使用者啟用 Siri 會取得麥克風的存取權。
例如在 iOS 上,在 Azure 通訊服務通話期間,如果 PSTN 通話傳入,則會引發 microphoneMutedUnexepectedly bad UFD,導致 Azure 通訊服務通話中的音訊停止流動,且通話會標示為靜音。 PSTN 通話結束後,使用者必須將 Azure 通訊服務通話取消靜音,該通話的音訊才能繼續開始流動。 如果是 Android Chrome,在 PSTN 通話傳入時,Azure 通訊服務通話中的音訊會停止流動,且 Azure 通訊服務通話不會標示為靜音。 在此情況下,不會產生 microphoneMutedUnexepectedly UFD 事件。 PSTN 通話結束後,Android Chrome 會自動重新取得音訊,且 Azure 通訊服務通話中的音訊正常開始流動。
如果相機開啟且發生中斷,Azure 通訊服務通話有可能會遺失相機。 遺失時,相機會標示為關閉,且使用者必須在中斷釋放相機後將相機重新開啟。
有時候,麥克風或相機裝置不會及時釋放,而且可能會導致原始通話發生問題。 例如,如果使用者嘗試在觀看 YouTube 影片時取消靜音,或如果 PSTN 通話同時作用中。
如果使用者在 iOS 15.2+ 上且使用 SDK 1.4.1-beta.1+ 版,則傳入的視訊串流不會停止轉譯,您還是需要進行取消靜音/啟動視訊步驟才能重新啟動傳出的音訊和視訊。
若為 iOS 15.4+,音訊和視訊應該大多會自動復原。 在某些邊緣案例中,應用程式為了取消靜音必須呼叫 API 以「取消靜音」(可能是使用者動作的結果),才能復原傳出的音訊。
如果使用者嘗試從前相機切換至後相機,iOS 與 Safari 的搭配會損毀,並重新整理頁面。
Azure 通訊服務通話 SDK 1.2.3-beta.1 版產生了一個錯誤 (bug),會影響所有從 iOS Safari 發來的通話。 當使用者嘗試將相機視訊串流從前相機切換至後相機時,就會發生此問題。 切換相機會導致 Safari 瀏覽器損毀,並重新載入頁面。
Azure 通訊服務通話 SDK 1.3.1-beta.1+ 版已修正此問題
- iOS Safari 版本:15.1
macOS Ventura Safari 中的螢幕畫面分享 (v16.3 和更低版本)
螢幕畫面分享不適用於 macOS Ventura Safari (v16.3 和更低版本)。 Safari 的已知問題,將在 v16.4+ 中修正。
重新整理頁面不會立即將使用者從其通話中移除
如果使用者正在通話,並決定重新整理頁面,通訊服務媒體服務不會立即將此使用者從通話中移除。 服務會等候使用者重新加入。 在媒體服務逾時後,使用者才會從通話中移除。
最好是建置不需要終端使用者在通話時重新整理應用程式頁面的終端使用者體驗。 如果使用者重新整理頁面,請在該使用者返回應用程式之後,重複使用相同的通訊服務使用者識別碼。 藉由使用相同的使用者識別碼來重新加入,使用者就會以 remoteParticipants
集合中的相同現有物件來表示。 從通話中其他參與者的觀點來看,使用者在重新整理頁面的期間內仍留在通話中,這段時間最多就一到兩分鐘。
如果使用者在重新整理之前傳送視訊,videoStreams
集合會保留先前的串流資訊,直到服務逾時並將其移除為止。 在此案例中,應用程式可能會決定觀察新增至集合的任何新串流,並轉譯具有最高 id
的串流。
您無法在網路上轉譯多個裝置的多個預覽
此問題為已知的限制。 如需詳細資訊,請參閱通話 SDK 概觀。
當應用程式在 iOS 或 iPadOS 上執行時,無法在 Safari 中列舉裝置
應用程式無法在 Safari iOS 或 iPadOS 上列舉或選取喇叭裝置 (例如藍牙)。 此問題是這些作業系統的已知限制。
如果您在 macOS 上使用 Safari,您的應用程式無法透過通訊服務裝置管理員來列舉或選取喇叭。 在此案例中,您必須透過作業系統選取裝置。 如果您在 macOS 上使用 Chrome,應用程式可以透過通訊服務裝置管理員來列舉或選取裝置。
- iOS Safari 版本:15.1
不斷切換視訊裝置可能會導致視訊串流暫時停止
在視訊裝置之間切換可能會導致視訊串流在從選取的裝置取得串流時暫停。 頻繁切換不同裝置可能會導致效能降低。 開發人員最好先停止某個裝置串流,再啟動另一個裝置串流。
在 iOS 上的 Safari 進行通話時,不會偵測到藍牙頭戴式裝置麥克風或是麥克風會沒有聲音
iOS 上的 Safari 不支援藍牙頭戴式裝置。 您的藍牙裝置不會列在可用的麥克風選項中,而且如果您嘗試透過 Safari 使用藍牙,其他參與者無法聽到您的聲音。
此迴歸是已知的作業系統限制。 在 macOS 和 iOS/iPadOS 上使用 Safari 時,無法透過通訊服務裝置管理員來列舉或選取喇叭裝置。 這是因為 Safari 不支援列舉或選取喇叭。 在此案例中,請使用作業系統來更新您選取的裝置。
輪替裝置可能會產生不良的視訊品質
當使用者輪替裝置時,此動作可能會降低串流中視訊的品質。
此問題會在下列環境中發生:
- 受影響的裝置:Google Pixel 5、Google Pixel 3a、Apple iPad 8 和 Apple iPad X
- 用戶端程式庫:通話 (JavaScript)
- 瀏覽器:Safari、Chrome
- 作業系統:iOS、Android
切換相機會讓畫面凍結
當通訊服務使用者使用 JavaScript 通話 SDK 加入通話,接著又選取相機切換按鈕時,UI 可能會變得沒有回應。 然後,使用者必須重新整理應用程式,或將瀏覽器移至背景。
此問題會在下列環境中發生:
- 受影響的裝置:Google Pixel 4a
- 用戶端程式庫:通話 (JavaScript)
- 瀏覽器:Chrome
- 作業系統:iOS、Android
通話處於連線狀態時發生視訊訊號問題
如果使用者在通話處於連線狀態時,快速開啟又關閉視訊,此動作可能會導致為通話取得的串流發生問題。 開發人員在建置應用程式時,所採用的方式最好是不需要在通話處於連線狀態時開啟又關閉視訊。 在下列案例中,可能會發生視訊效能降級的情形:
- 如果使用者使用音訊來開始,然後啟動又停止視訊,而此時通話處於連線狀態。
- 如果使用者使用音訊來開始,然後啟動又停止視訊,而此時通話處於大廳狀態。
在 macOS 和 iOS 上列舉或存取 Safari 的裝置
在某些環境中,您可能會注意到裝置權限會在一段時間後重設。 在 macOS 和 iOS 上,除非取得串流,否則 Safari 不會長時間保留權限。 若要解決此限制,最簡單的方式是先呼叫 DeviceManager.askDevicePermission()
API,再呼叫裝置管理員的裝置列舉 API。 這些列舉 API 包括 DeviceManager.getCameras()
、DeviceManager.getSpeakers()
和 DeviceManager.getMicrophones()
。 如果有權限存在,使用者不會看到任何訊息。 如果權限不存在,系統會再次提示使用者取得權限。
此問題會在下列環境中發生:
- 受影響的裝置:iPhone
- 用戶端程式庫:通話 (JavaScript)
- 瀏覽器:Safari
- 作業系統:iOS
轉譯遠端參與者視訊時發生延遲
在群組通話進行期間,假設使用者 A 傳送視訊,然後使用者 B 加入通話。 有時候,使用者 B 不會看到使用者 A 的視訊,或使用者 A 的視訊會在延遲很久後才開始轉譯。 可能是網路環境設定問題造成此延遲。 如需詳細資訊,請參閱網路建議。
在通話期間使用協力廠商程式庫可能會導致音訊遺失
如果您在應用程式內另外使用 getUserMedia
,音訊串流會遺失。 協力廠商程式庫會從 Azure 通訊服務程式庫接管裝置的存取權,因而導致音訊串流遺失。
- 請勿在通話期間使用會於內部使用
getUserMedia
API 的協力廠商程式庫。 - 如果還是需要使用協力廠商程式庫,能復原音訊串流的唯一方法是變更選取的裝置 (如果使用者有多個裝置) 或重新開始通話。
此問題會在下列環境中發生:
- 瀏覽器:Safari
- 作業系統:iOS
此問題的原因可能是,從相同裝置取得自己的串流會有產生競爭條件的副作用。 從其他裝置取得串流可能會導致使用者的 USB/IO 頻寬不足,而且 sourceUnavailableError
率會爆增。
過度使用某些 API (例如靜音/取消靜音) 導致 Azure 通訊服務基礎結構的節流
使用靜音/取消靜音 API 呼叫時,Azure 通訊服務基礎結構會將叫用靜音/取消靜音的本機參與者音訊狀態告知通話中的其他參與者,讓通話中的參與者知道誰是靜音/未靜音。 過度使用靜音/取消靜音會導致 Azure 通訊服務基礎結構的封鎖。 如果參與者 (或代表參與者的應用程式) 嘗試在 30 秒滾動視窗中連續每秒超過 15 次執行靜音/取消靜音,就會導致節流。
呼叫自動化 API
以下限制是通訊服務通話自動化 API 中的已知問題:
伺服器應用程式目前唯一支援的驗證是使用連接字串。
只會在相同通訊服務資源的實體之間進行通話。 跨資源通訊會遭到封鎖。
不允許在 Microsoft Teams 的租用戶使用者與通訊服務使用者或伺服器應用程式實體之間進行通話。
如果應用程式撥出到兩個以上的 PSTN 身分識別,然後結束通話,則其他 PSTN 實體之間的通話會中斷。
下列各節提供與呼叫原生和原生 UI SDK Azure 通訊服務 相關聯之已知問題的相關信息。
Android API 模擬器
在 Android 5.0 (API 層級 21) 和 Android 5.1 (API 層級 22) 上使用 Android API 模擬器時,預期會發生一些損毀。
Android Trouter 模組衝突
當 Android 聊天和通話 SDK 位於相同的應用程式中時,聊天 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'
注意:如果應用程式嘗試觸碰任何通知 API,例如 chatAsyncClient.startRealtimeNotifications()
或 chatAsyncClient.addEventHandler()
,將會發生運行時錯誤。
iOS 進行中的影片圖片圖片 (PiP)
應用程式進入背景時,內送視訊會停止。 如果應用程式在前景,影片會正確轉譯。
透過 CallKit 接聽來電的 iOS
啟用 CallKit 時,不會套用傳出音訊設定,且使用者會直接透過 CallKit 接聽來電。
UI 程式庫
您可以遵循 GitHub 存放庫中的已知問題 Wiki 頁面。