Running jitsi in webview causing the user to join muted and unable to unmute the call

I am currently developing a react native application with the jitsi meet in a webview. When a user joins from a laptop or browser, they are joining unmuted. But when a user joins thorugh our app webview, the user is getting muted.
I had read multiple issues and the solutions, and tried implementing all in the present code. But it is not working as expected. I even tried adding the track before the conference starts, but no reponse.
Can anyone help me on this ???

What is this webview? Does it support webrtc? Why are you overriding user agent with Safari?

We are not using the SDKs of jitis. We are using the lib-jitsi-meet for the development. With this library we created a react application for us to use with react native. Webview is a screen which can render the websites inside the react native application. I am not sure about the webrtc but we are using recordRTC to ecord the audio conferences

We are overriding the useragent with safari because that is a solution that we have received from this response how to allow jitsi meeting on mobile browser using webview? I am Externel jitsi api. · Issue #5773 · jitsi/jitsi-meet · GitHub.

Is the webview asking for permissions to access the camera and mic? Are those granted?
Extract the logs from lib-jitsi-meet, can you share them here?

Even on chrome browser on android phone, we are facing the same problem where the audio is muted on start of conference.
We are getting these logs as an output from jitsi-meet-lib from Chrome Browser on an android phone

Logger.js:154 2023-04-07T05:47:29.775Z [JitsiConference.js] <ih.setStartMutedPolicy>: Failed to set start muted policy, participant is not a moderator
r @ Logger.js:154
ih.setStartMutedPolicy @ JitsiConference.js:2663
onConnectionSuccess @ example_user_join.js:366
(anonymous) @ example_user_join.js:518
r.emit @ events.js:153
connectionHandler @ xmpp.js:353
_stropheConnectionCb @ XmppConnection.js:317
_changeConnectStatus @ strophe.umd.js:3242
_onSessionResultIQ @ strophe.umd.js:3833
run @ strophe.umd.js:2092
(anonymous) @ strophe.umd.js:3363
(anonymous) @ strophe.umd.js:3360
forEachChild @ strophe.umd.js:1193
_dataRecv @ strophe.umd.js:3358
_onRequestStateChange @ strophe.umd.js:4626
XMLHttpRequest.send (async)
e @ strophe.umd.js:4713
_processRequest @ strophe.umd.js:4727
_throttledRequestHandler @ strophe.umd.js:4857
_onIdle @ strophe.umd.js:4535
_onIdle @ strophe.umd.js:3988
(anonymous) @ strophe.umd.js:4828
setTimeout (async)
_send @ strophe.umd.js:4828
send @ strophe.umd.js:2846
_establishSession @ strophe.umd.js:3804
_onResourceBindResultIQ @ strophe.umd.js:3779
run @ strophe.umd.js:2092
(anonymous) @ strophe.umd.js:3363
(anonymous) @ strophe.umd.js:3360
forEachChild @ strophe.umd.js:1193
_dataRecv @ strophe.umd.js:3358
_onRequestStateChange @ strophe.umd.js:4626
XMLHttpRequest.send (async)
e @ strophe.umd.js:4713
_processRequest @ strophe.umd.js:4727
_throttledRequestHandler @ strophe.umd.js:4857
_onIdle @ strophe.umd.js:4535
_onIdle @ strophe.umd.js:3988
(anonymous) @ strophe.umd.js:4828
setTimeout (async)
_send @ strophe.umd.js:4828
send @ strophe.umd.js:2846
bind @ strophe.umd.js:3742
_onStreamFeaturesAfterSASL @ strophe.umd.js:3707
_onStreamFeaturesAfterSASL @ strophe.stream-management.js:230
n @ strophe.umd.js:3673
(anonymous) @ strophe.umd.js:3676
run @ strophe.umd.js:2092
(anonymous) @ strophe.umd.js:3363
(anonymous) @ strophe.umd.js:3360
forEachChild @ strophe.umd.js:1193
_dataRecv @ strophe.umd.js:3358
_onRequestStateChange @ strophe.umd.js:4626
XMLHttpRequest.send (async)
e @ strophe.umd.js:4713
_processRequest @ strophe.umd.js:4727
_throttledRequestHandler @ strophe.umd.js:4857
_onIdle @ strophe.umd.js:4535
_onIdle @ strophe.umd.js:3988
(anonymous) @ strophe.umd.js:3006
setTimeout (async)
_sendRestart @ strophe.umd.js:3006
_sasl_success_cb @ strophe.umd.js:3680
run @ strophe.umd.js:2092
(anonymous) @ strophe.umd.js:3363
(anonymous) @ strophe.umd.js:3360
forEachChild @ strophe.umd.js:1193
_dataRecv @ strophe.umd.js:3358
_onRequestStateChange @ strophe.umd.js:4626
XMLHttpRequest.send (async)
e @ strophe.umd.js:4713
_processRequest @ strophe.umd.js:4727
_throttledRequestHandler @ strophe.umd.js:4857
_onIdle @ strophe.umd.js:4535
_onIdle @ strophe.umd.js:3988
(anonymous) @ strophe.umd.js:4828
setTimeout (async)
_send @ strophe.umd.js:4828
send @ strophe.umd.js:2846
_attemptSASLAuth @ strophe.umd.js:3541
authenticate @ strophe.umd.js:3503
_connect_cb @ strophe.umd.js:3457
_onRequestStateChange @ strophe.umd.js:4626
XMLHttpRequest.send (async)
e @ strophe.umd.js:4713
_processRequest @ strophe.umd.js:4727
_throttledRequestHandler @ strophe.umd.js:4857
_connect @ strophe.umd.js:4252
connect @ strophe.umd.js:2631
_interceptConnectArgs @ strophe.stream-management.js:224
connect @ XmppConnection.js:273
_connect @ xmpp.js:576
connect @ xmpp.js:678
sh.connect @ JitsiConnection.js:61
startACall @ example_user_join.js:533
onClick @ App.js:160
callCallback @ react-dom.development.js:4164
invokeGuardedCallbackDev @ react-dom.development.js:4213
invokeGuardedCallback @ react-dom.development.js:4277
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:4291
executeDispatch @ react-dom.development.js:9041
processDispatchQueueItemsInOrder @ react-dom.development.js:9073
processDispatchQueue @ react-dom.development.js:9086
dispatchEventsForPlugins @ react-dom.development.js:9097
(anonymous) @ react-dom.development.js:9288
batchedUpdates$1 @ react-dom.development.js:26140
batchedUpdates @ react-dom.development.js:3991
dispatchEventForPluginEventSystem @ react-dom.development.js:9287
dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay @ react-dom.development.js:6465
dispatchEvent @ react-dom.development.js:6457
dispatchDiscreteEvent @ react-dom.development.js:6430
Logger.js:154 2023-04-07T05:47:29.993Z [JitsiConference.js] <ih._updateProperties>: Audio unmute permissions set by Jicofo to false
Logger.js:154 2023-04-07T05:47:29.993Z [JitsiConference.js] <ih._updateProperties>: Video unmute permissions set by Jicofo to false

In your example_user_join you are executing setStartMutedPolicy from a participant that is not moderator, an error occurs and the strophe listener breaks and I guess this is the problem. If you remove that call, what do you get?

I have disabled the setStartMutedPolicy but I still see the same problem, the user joins muted. Anything else that I can try to unmute the local particpant.

Any idea why this thing is not happening on my desktop’s Chrome browser?

Have you give permissions for the device access? What do the logs say?

We have added all the permissions for the device.

logs2.txt (274.5 KB)