This commit integrates RingRTC in to Signal-iOS. Only two source code files are affected, CallService.swift and PeerConnection.swift, as well as the Xcode project. Other code, related to the WebRTC protocol buffers, has been removed since it is now handled by RingRTC. RingRTC is provided as a framework named SignalRingRTC.framework. This works in tandem with WebRTC, and hence currently requires that as well, WebRTC.framework. To make integration easier, avoid a zombie repository on GitHub, and keep the integrity of older versions, we re-use the signal-webrtc-ios-artifacts repository. We simply add the new framework for SignalRingRTC in the Build directory. The Xcode project is adjusted to include the new SignalRingRTC framework. Please note that the WebRTC.framework is also modified for RingRTC, and is itself updated and part of the delivery. Both of the framework artifacts come from the ringrtc repository. The PeerConnectionClient.swift implementation is very different than the previous version. It now serves as a thin wrapper around the RingRTC CallConnection class. It provides some fundamental serialization and helps with overall stability, although it could be deprecated eventually. For the CallService, the basic callflow is changed. Previously, it would use promise chains to go through RTC negotiation until a message was created for signaling to the peer. Now, RingRTC itself handles this, and those promise chains are replaced with singular calls in to the CallConnection (via PeerConnectionClient), with asynchronous callbacks coming in the future for the signaling parts and other key notifications. In summary, other aspects of the integration on CallService include: - The removal of the call timeout and associated callConnectedPromise. Timeouts are handled within RingRTC. - For incoming calls, the 'backgroundTask' is now a variable in the CallData class and cleared on call connect or eventual deinit. - When receiving Ice candidates, the existing behavior of queueing them until the PeerConnectionClient is valid is maintained. - When sending Ice candidates, the existing behavior of queueing them so they are sent in batches in cadence with the actual sending speed is maintained. - All signaling handlers, to send messages such as offer, answer, etc., are handled asynchronously and in a consistent way, with call failures being issued for any negative result. |
||
|---|---|---|
| .github | ||
| fastlane | ||
| Pods@944b0aa373 | ||
| Scripts | ||
| SettingsBundle | ||
| Signal | ||
| Signal.xcodeproj | ||
| Signal.xcworkspace | ||
| SignalMessaging | ||
| SignalServiceKit | ||
| SignalShareExtension | ||
| ThirdParty | ||
| .clang-format | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .ruby-version | ||
| BUILDING.md | ||
| CONTRIBUTING.md | ||
| Gemfile | ||
| Gemfile.lock | ||
| Jenkinsfile | ||
| LICENSE | ||
| MAINTAINING.md | ||
| Makefile | ||
| Podfile | ||
| Podfile.lock | ||
| README.md | ||
| SignalServiceKit.podspec | ||
Signal iOS
Signal is a free, open source, messaging app for simple private communication with friends.
Also available on Android and Desktop.
Questions?
For troubleshooting and questions, please visit our support center or unofficial community forum.
Contributing Bug Reports
We use GitHub for bug tracking. Please search existing issues and create a new one if the issue is not yet tracked. For Android users, please use the Signal for Android issue tracker.
Contributing Translations
Help us translate Signal! The translation effort happens on Transifex.
Contributing Code
Instructions on how to setup your development environment and build Signal-iOS can be found in BUILDING.md. Other useful instructions for development can be found in the Development Guide wiki page. We also recommend reading the contribution guidelines.
Contributing Ideas
Have something you want to say about Signal Foundation projects or want to be part of the conversation? Get involved in the community forum.
Cryptography Notice
This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.
License
Licensed under GPLv3
Copyright 2014-2019 Open Whisper Systems
Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc., registered in the U.S. and other countries.