Signal-ios: Transfer Account screen not appearing on old device when transferring to new

Created on 13 Nov 2020  ·  30Comments  ·  Source: signalapp/Signal-iOS

  • [x] I have searched open and closed issues for duplicates
  • [x] I am submitting a bug report for existing functionality that does not work as intended
  • [x] This isn't a feature request or a discussion topic

Bug description

When attempting to transfer an account from an old iPhone to new iPhone, the old iPhone fails to prompt the user with the "Transfer Account" screen as shown in the knowledge base.

Steps to reproduce

  • Ensure both old and new phones are on the same wifi network with bluetooth enabled
  • On the new phone open the freshly installed Signal app
  • Proceed through the prompts until you reach the QR Code to be scanned by the old phone
  • Open Signal on the old phone
  • Wait for "Transfer Account" prompt

Actual result: Signal on the old phone is unchanged and no "Transfer Account" prompt is displayed. It functions as normal and seems unaware of any transfer process being initiated.

Expected result: Signal on the old phone will display the "Transfer Account" prompt and the user can proceed to transfer their account from the old phone to the new phone.

Device info

Old Phone
Device: iPhone 6s (64GB)
iOS version: 14.2
Signal version: 3.21.2

New Phone
Device: iPhone 12 Mini (256GB)
iOS version: 14.2
Signal version: 3.21.2

Logs

On the new phone, when tapping 8 times on the QR Code screen, "Could not find any logs." is reported.
Latest attempt got this: https://debuglogs.org/36b31e5b385aa1cf7f4627b5d7b8e20ed929747eae8cc00a6e15db0216cb0c8d.zip

Suspicions

Following the setup process on the new phone to the "Get the message" page where the local network permissions are enabled, when pressing "Enable Permissions" the user is taken directly to the phone number page without iOS actually prompting the user to allow local network permissions. It can be confirmed when checking in Settings > Signal and Settings > Privacy > Local Network that local network permissions are not enabled (or visible) for Signal on the new phone. This setting cannot initially be set by the user either.

So it can be assumed that for some reason when pressing "Enable Permissions" iOS is not sent the request for that permission by Signal. This could explain why both phones cannot talk to each other.

Most helpful comment

Hi, a fix for this is on the way, but if you’d like to transfer to your new phone sooner please download the latest beta version of Signal from TestFlight https://testflight.apple.com/join/8FHtd1Jq

The beta build is stable, and you can safely install the AppStore version over it after transferring if you do not wish to remain in the beta group.

All 30 comments

Update: I reinstalled Signal on the new phone and now when pressing "Enable Permissions" iOS prompts for access to "Contacts" and "Notifications" but not "Local Network". I don't think there is a way for me to manually enable this. I believe apps need to first make the request for access.

Actually looking at the code, it doesn't look like Local Network permission are requested on Enable Permissions view:

https://github.com/signalapp/Signal-iOS/blob/98b3da420ef64c885d2fc4739dc66caaedda734c/Signal/src/ViewControllers/Registration/OnboardingPermissionsViewController.swift

I can confirm that this is a problem. The new phone isn't asking for permission and asks the user instead to grant the permission manually in the settings. But iOS doesn't allow us to grant the permission manually when the app has not yet tried to access the local network. This is completely blocking the transfer feature on iOS right now :(


This is how it looks like on a fresh install
image


This is how it looks like on a phone where signal has already been installed and activated for some time
image

I can confirm this.

Confirm

I have hit this problem too

And now I'm apparently banned from asking an SMS code because I tried too much...

This is blocking

@charlesmchen-signal @michaelkirk-signal @Imperiopolis-Signal

And now I'm apparently banned from asking an SMS code because I tried too much...

This is blocking

Be patient, that SMS auth opens up again after a couple of minutes (15-30 for me). Still the other problem remains.

I have this problem too.

  • Updated both phones to iOS 14.2
  • SIM card is still in old phone. I have been receiving confirmation SMS on that one until now
  • On the old phone (that is registered) in _Settings > Signal_ there is now a "Local Network" option, which is turned on.
  • In the new phone's Signal settings there is no "Local Network" option.
  • Now also getting the "You've tried too often. Wait a minute to try again"
  • Hope this is a simple bug fix :crossed_fingers:

I can confirm this problem!

I am also experiencing this issue

I can also confirm the problem. Both phones on 14.2

Same issue here. Bad timing for everyone getting their new iPhones today 😕

Exactly the same problem here, presumably because there is no request for local network access on the new device.

Hi, a fix for this is on the way, but if you’d like to transfer to your new phone sooner please download the latest beta version of Signal from TestFlight https://testflight.apple.com/join/8FHtd1Jq

The beta build is stable, and you can safely install the AppStore version over it after transferring if you do not wish to remain in the beta group.

Hey!

Thank You very much!

I can confirm that the TestFlight version 3.22.0.3 actually solved the problem for me.

Best Roddi

Am 13.11.2020 um 18:20 schrieb Nora Trapp notifications@github.com:


Hi, a fix for this is on the way, but if you’d like to transfer to your new phone sooner please download the latest beta version of Signal from TestFlight https://testflight.apple.com/join/8FHtd1Jq

The beta build is stable, and you can safely install the AppStore version over it after transferring if you do not wish to remain in the beta group.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

@roddi Thanks for confirming that it works! Because for me it doesn't work using the beta version. The "Local Network" permission is now available again, but the transfer does not get invoked.

Update: Sorry, for being stupid. I assumed the missing permission is the problem and updated only on the target devide to beta. After updating on both phones, it's working fine!

Great news, I'm glad to hear it's working for you both. The AppStore version with the fix should also be rolling out shortly. For anyone who is waiting, the build to look for is 3.21.3

The beta worked for me too! Thanks a lot!

@Imperiopolis-Signal Thanks for jumping on this so quickly. You guys are gold!

I think I'll hold out for the AppStore version if it will be out soon.

The beta build is stable, and you can safely install the AppStore version over it after transferring if you do not wish to remain in the beta group.

If we had a way to backup this migration wouldn't feel that risky. Also it would be so much easier if Signal on iOS would just support the same file format it uses on Android to create/restore backups. I really fear the migration as I just saw that part of the migration is the automatic deletion of the old history. No way to redo the transfer for any reason. Also a backup file would work if the phone has to go for a repair or so. Signal is the number one reason I didn't get my broken (screen and battery) old phone fixed as there was no way to backup.

I love Signal and I'm happy for all your work but the whole effort of doing an additional transfer protocol instead of using the way Android supports which would also allow cross migration is just bad and the missing backup hurts so much.

I love Signal and I'm happy for all your work but the whole effort of doing an additional transfer protocol instead of using the way Android supports which would also allow cross migration is just bad and the missing backup hurts so much.

I tend to agree. That said, the Signal team must have some reasoning behind this architecture decision. Maybe it has already been discussed elsewhere, if so perhaps someone could provide a link.

I love Signal and I'm happy for all your work but the whole effort of doing an additional transfer protocol instead of using the way Android supports which would also allow cross migration is just bad and the missing backup hurts so much.

We've spoken about this at length in various forums, but a file based backup is not something typical iOS users understand. It's also significantly more complicated to implement and maintain (because anyone could try and restore a backup made from any version of Signal). It has been a nightmare to support for our Android team, even on a platform where file management is something people are familiar with. That said, we realize the transfer is also an imperfect solution, but it's at least something compared to the years of nothing while we work on the right solution. The future for moving your data between devices in Signal likely looks like a choice between direct peer-to-peer transfer or restoration from some form of secure network storage.

I really fear the migration as I just saw that part of the migration is the automatic deletion of the old history. No way to redo the transfer for any reason.

The migration very carefully verifies that the transfer has been 100% successful before erasing any data on your old device. A manifest of every file to be transferred along with the checksum for that file is sent to the new device. The new device verifies that it has received every file that was intended to be transferred, that the checksum on every file exactly matches, and that all the files are properly moved into place and the database is decryptable. Only after all of these things are true does it tell your old device it's safe to erase itself. If anything is amiss, the transfer will fail and the data will remain on the old device. Also, you don't need to take my word for it. If you want to verify this verification logic yourself, take a look at https://github.com/signalapp/Signal-iOS/blob/02d6dcd1a3328b7cd16cd5036c37f82fd3bd4fcd/Signal/src/util/Device%20Transfer/DeviceTransferService%2BRestore.swift#L24

Also, all that said, if you want to discuss the backup system further please join us on our community forum. We reserve github issues for discussion of bugs.

I too had this problem, and the Beta solved. It wasn't clear (to me) that even though the source device had the permission, it also had to be updated to the beta, but once I read here actually carefully, and one "couldn't communicate", it transferred fine. Awesome feature! I've bumped through a couple of phone changes with signal and this is much much nicer!

Beta worked for me, thanks for getting a fix out so quickly!

@Imperiopolis-Signal Thanks for explaining the architecture decision. Makes sense. I figured there must be some good reasons.

Also, any idea on when the AppStore version with this fix will roll out? Are we talking hours or days?

Just want to manage my own expectations :)

The AppStore release was just approved by Apple and is rolling out now. 3.21.3 is the release to look for. I'm going to close this issue now that it's available in the app store.

Installed and transferring. Thanks again for the quick response.

Related, if people are getting over heating issues, this was my solution:
GOPR0029

Wow, that was fast. Excellent work!! 👏

Was this page helpful?
0 / 5 - 0 ratings

Related issues

maxbrandes picture maxbrandes  ·  4Comments

echarlie picture echarlie  ·  5Comments

ngheungyu picture ngheungyu  ·  4Comments

fracture-point picture fracture-point  ·  3Comments

mxmerz picture mxmerz  ·  5Comments