Format Your New Topic as Follows:
Video SDK Type and Version
SDK Type: Zoom Video SDK Web
SDK Version: 2.3.0
Description
When using startAudio({ speakerOnly: true }) on iOS Safari after the user denies microphone permission, the audio receive functionality only works if another participant already has an active audio stream. If no other participant has audio active when speakerOnly is initiated, the audio receive path becomes corrupted and the user cannot hear any audio even when other participants later enable their microphones.
Expected behavior: The iOS Safari user should be able to join in speaker-only mode (listen without microphone) and hear audio from other participants regardless of when those participants enable their microphones.
Error?
[Error] Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.
- The SDK internally throws an unhandled
NotAllowedErrorduringstartAudio({ speakerOnly: true })
2.The SDK reports success (promise resolves)
3.If another participant already has active audio → audio works
4.If no other participant has active audio → audio receive path is corrupted and user cannot hear audio even when other participants later turn on their microphones
Use case: We need to support users who deny microphone permission but still want to listen to the call (speaker-only mode). This works correctly on desktop browsers but fails on iOS Safari under specific conditions.
Troubleshooting Routes
-
Tested with
backgroundNoiseSuppression: false- Same issue occurs -
Tested with various delays (100ms, 300ms, 500ms) before calling
startAudio()- Same issue -
Verified the issue does NOT occur on desktop browsers -
speakerOnly: trueworks correctly on Chrome, Firefox, Safari desktop -
Verified the issue does NOT occur when microphone permission is granted on iOS Safari
-
Confirmed
getUserMedia()permission denial is handled correctly in our code before calling the SDK -
Tested with
autoStartAudioInSafari: true- Same issue
How To Reproduce
-
Create a Zoom Video SDK session
-
Participant A (Specialist) joins from a desktop browser with microphone OFF
-
Participant B (Client) joins from iOS Safari
-
iOS Safari shows the “Tap to start audio” prompt (required for Safari autoplay policy)
-
User taps the prompt, triggering microphone permission request
-
User taps “Don’t Allow” to deny microphone permission
-
Observe:
startAudio()resolves successfully, but internalNotAllowedErroris thrown -
Specialist (Participant A) now turns ON their microphone
-
Result: iOS Safari user (Participant B) cannot hear the Specialist