Fixes an issue where users were no longer receiving messages after restoration. During restoration, the restoring device copies the transferred database files to a special "hotswap" directory since we don't want to overwrite our currently in-use database. Once finished, it re-opens the database pointing to our hotswap directory. It would then move the hotswap database to its primary location on the next app launch. The problem here is our extensions don't know how to read the hotswap directory. Even if we added that capability, it's going to be tricky to coordinate which database they read and when as the main app shuffles files around. This fix adjusts our restoration flow. Instead of having a special "primary" and "hotswap" directory that we need to fix up on the next launch, we instead record a UserDefaults entry that points to our current database directory. Once transfer has completed, the main app only needs to update the current database directory in UserDefaults. No post-launch swapping needs to occur. Extensions will listen for updates to this database location by registering KVO on NSUserDefaults. This change also adjusts the restoration flow to break it up into discrete stages. The motivation here is we need to make sure that a partial restoration doesn't put the extensions in an inconsistent state. |
||
|---|---|---|
| .github | ||
| fastlane | ||
| NotificationServiceExtension | ||
| Pods@0f148ca373 | ||
| Scripts | ||
| Signal | ||
| Signal.xcodeproj | ||
| Signal.xcworkspace | ||
| SignalMessaging | ||
| SignalServiceKit | ||
| SignalShareExtension | ||
| ThirdParty | ||
| .clang-format | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .ruby-version | ||
| .swiftlint.yml | ||
| .xcode-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.