为什么在调用RTPeerConnection.createOffer()后,Safari iOS上的提供为空?

为什么在调用RTPeerConnection.createOffer()后,Safari iOS上的提供为空?,safari,webrtc,mobile-safari,Safari,Webrtc,Mobile Safari,我的代码是 const localMediaStream = await navigator.mediaDevices.getUserMedia({audio: true}) const rtcPC = new RTCPeerConnection(iceServers: ... ); localStream.getTracks().forEach(track => rtcPC.addTrack(track, localStream)); const offer = await rtcPC

我的代码是

const localMediaStream = await navigator.mediaDevices.getUserMedia({audio: true})
const rtcPC = new RTCPeerConnection(iceServers: ... );
localStream.getTracks().forEach(track => rtcPC.addTrack(track, localStream)); 
const offer = await rtcPC.createOffer();
rtcPC.setLocalDescription(offer);  
console.log('offer=====', rtcPC.localDescription);                            /// displays null
这在Chrome上运行良好,但在iOS Safari 13.5.1上,返回的报价始终为空


有什么想法吗?

问题出在rctPC.setLocalDescription中。在Chrome中,这似乎立即起作用,即使规范说它会在设置完成后解决一个承诺。在iOS中,它不是即时的,所以我需要遵循规范,等待承诺解决,然后localdescription才可用。

问题在rctPC.setLocalDescription中。在Chrome中,这似乎立即起作用,即使规范说它会在设置完成后解决一个承诺。在iOS中,它不是即时的,所以我需要遵循规范,等待承诺得到解决,然后才能使用localdescription。

我在Safari中看到getUserMedia的投诉。你能确认它在你这边有效吗?你能添加try-catch并打印你看到的错误吗?我在Safari中看到过getUserMedia的抱怨。你能确认它在你这边有效吗?你能添加try-catch并打印你看到的错误吗?