This repo contains the patched WebRTC builds we require to fix some issues with react-native-webrtc.
The Chromium WebRTC library has some built-in assumptions that are not so great. For example, requesting microphone access and enabling the microphone automatically even when only being used for playback or requesting camera access by default.
Some of these issues can be fixed by in-place, such as the microphone issue by implementing your own Audio Device Manager (ADM), but that requires a huge level of effort as well as maintenance. In some cases, like this, it is best for us to apply battle-tested patches to the WebRTC source and cut manual builds.
Builds are currently created manually, and then published manually. Ideally we can eventually automate it, but this is what it is now. Versioning follows the same versioning scheme as WebRTC/react-native webrtc:
<Chrome Major Version>.0.<Release Number>
Once published, update the platform podfile to point to the new released version:
s.dependency = 'NoiceWebRTC', '~> 111.0.2'
- Make sure you have Python installed and usable.
- Follow the instructions in react-native-webrtc/Building WebRTC to get the WebRTC source on your machine and ready to build.
- Currently we are targeting revision M111 + post-release fixes, which would be WebRTC branch
5749
.
- Currently we are targeting revision M111 + post-release fixes, which would be WebRTC branch
- Apply the patches included in patches/ using
git apply <patch-file>
. - Follow the instructions in react-native-webrtc/Building WebRTC to build the project.
- Create a new release in this repo, attaching a zip of the
.xcframework
. - Publish to CocoaPods Trunk.
$ # Auth with trunk
$ pod trunk register [email protected] 'Your Name' --description='Your Device'
$ # Publish
$ pod trunk push ./ios/NoiceWebRTC.podspec
❕ If you need ownership access to the podspec to publish, let @bengsfort (Matti) know.
Tbd