signalapp / Signal-iOS

A private messenger for iOS.
https://signal.org
GNU Affero General Public License v3.0
10.83k stars 3.04k forks source link

"Transfer from iOS Device" does not survive interruptions #4529

Closed mstange closed 4 years ago

mstange commented 4 years ago

Bug description

When transferring message history data to a new iPhone, it is easy to interrupt the transfer. This causes grief because restarting the transfer is expensive: the transfer takes a long time, and it requires an activation SMS on the new iPhone every time, and that SMS is rate limited.

For example, the following actions on the "source" iPhone irrevocably abort the transfer:

It would be great if the transfer could continue after these actions.

Device info

Device: iPhone 6S

iOS version: 13.5.1

Signal version: 3.14.2.2

michelle-signal commented 4 years ago

Device transfer currently uses Apple's Multipeer Connectivity framework to transfer data. A limitation with this framework is it only works correctly while the app is foreground:

If the app moves into the background, the framework stops advertising and browsing and disconnects any open sessions.

Because of this restriction, device transfer currently requires that the app remains foreground until it completes.