I took a little break from writing blog posts due to how busy I've been in these past months, but I could not resist writing about the mess that I stumbled upon recently. You see, I got some Apple devices for a freelance thing that I was working on (because there is no easy way to build iPhone apps from other platforms), but was generally intending to keep using my Android phone as a daily driver, because it was okay for my needs.
However, that plan was cut a bit short, because the battery on the older Android phone started swelling, a little bit like this:
It wasn't that extreme, thankfully, but the writing was on the wall - I'd very much need to move over to the iPhone because the days of my Android device have been numbered. "No big deal," I thought, because surely this couldn't turn out to be a cumbersome process. Right?
I was wrong to expect this to be easy.
I could migrate most of the data relatively easily, sometimes just use the same apps on the iPhone as well, such as Google Authenticator, which is available on both platforms, however, that's not always the case.
When it came to WhatsApp, the data is (mostly) stored on the phone itself, so I thought that I'd just do a cloud backup from the Android phone, then log in with the iPhone and restore the messages and images from the backup, right? I mean, it's one of the most popular chat applications here in Europe, so surely that process is something that a lot of folks go through and that they'd have perfected.
Not really:
As you can see, Android ONLY does backups to Google Drive and iPhone only does backups to iCloud. There's no way to change what storage platform is used, neither supports the other's platform, so essentially I'm out of luck here. In addition to that, I can't really get the database files directly from the Android phone, because they are encrypted and to get the encryption key, I'd need to root the device.
Not only that, but I also can't be logged in to more than one device at a time, in addition to their device switching being rate limited, preventing me from experimenting with any other options easily, because I have to switch back and forth:
But wait, it gets more dire!
Thankfully, there's a solution for this.
There's an application called Move to iOS which Apple has developed to help in migrating from Android to iPhone and which supports WhatsApp data transfer as well! That's really cool, plus it's completely free:
It just asks me for the setup code:
Wait, setup code? The application even tells me where to find it:
...make sure you are in iOS Setup Assistant...
Reading the page onward reveals why this solution won't be a solution at all:
If you already finished setup, you need to erase your iOS device and start over.
So, it ONLY works during the initial setup phase of the phone and there's literally no way for me to invoke the sync logic after the setup is finished. All of those apps that I've already installed, all of the data that I've already transferred over due to fears of my phone just refusing to work at one point, as well as anything I've been up to with the freelance thing? I'd need to wipe all of that and start over from a blank slate.
It's obvious that that's silly and I'm not doing that. So what else is there?
Luckily, there are a few pieces of third party software out there, that automate getting the data out and then importing it on the other device, one such piece of software is Dr.Fone, which includes functionality for migrating WhatsApp data:
I will say that it worked for me, but this won't be a glowing recommendation. Quite the opposite, in fact, because, it's expensive, even if I will ever realistically only use it once:
(they also ended up charging me more than the indicated price, might be a tax thing, not sure)
Furthermore, let me be frank - I shouldn't have to install a bunch of third party software, sometimes of questionable quality or reputation, just because Apple, Google and Meta won't always play nicely. This is a problem of their own making, that shouldn't exist in the first place. I hope that my tone isn't too brash, but losing years of messages is hopefully understandably upsetting, so I'd rather not experience that.
For what it's worth, the software itself performed as expected:
Along the way, however, there were some odd instructions, such as needing to disable the "Find My iPhone" functionality:
At this point, I was willing to do even that, just to get my data over to the new device, after all, nobody seemed to claim that the software was a scam or anything:
Except that I also needed to disable "Stolen Device Protection" for the duration of the migration, as a prerequisite:
It turns out that you can't actually do this on a whim, though, because it gave me a full hour countdown:
It shouldn't be a big deal, because it's just one hour, except that I don't know if my phone even has an hour of life left. Not only that, but it was early in the morning at that point and I needed sleep. But of course, after coming back to the phone after a nice night's sleep, I found out that the cooldown actually reset and I had to wait another hour, all over again.
Thankfully, the USB connections between the phones and the PC worked even after putting the PC to sleep and waking it up in the morning, so eventually the backup finished successfully:
I finally got all of my data back as well, except for the WhatsApp Stickers and possibly some other stuff, which I had to carry over manually:
However, none of this left me feeling particularly happy:
You know what would solve all of that?
This:
Dump the chat database as a regular unencrypted SQLite database. Take that database, any media that you want to backup, photos, audio, stickers, documents and anything else and put it all in some sort of an encrypted archive. 7z is wonderful and has a good compression ratio, even ZIP would work. The encryption key can also be just a text file that's generated together with the backup, or maybe a passphrase that the user has decided on. Then, backup that encrypted archive wherever you want, whether that's a PC, a USB stick, a cloud platform, an e-mail attachment or anything else. Bring it to either a folder of backups, or maybe the target device, where you can also extract it. Done.
There is no reason for software to be this over-complicated and you cannot tell me that there's a good reason for this.
As a side note, Google Takeout is pretty cool. If they can do that in a reasonable manner for a bunch of seemingly super complex products, there's no reason to make your users struggle this much for a chat app. Phones should have really been more like personal computers, where you have access to the full file system with a user that has the appropriate permissions, instead of messing around with hidden folders that you need to root or jailbreak your device for.
Something like the data transfer in question should take minutes, not hours.
I feel like I might also point out that the overall experience of actually using the phones is pretty nice.
My Android phone served me diligently for a long time and even if it wasn't the highest spec phone, I really liked that it was rather durable! If only it had an easily replaceable battery, I would have been more than happy to keep using it for the years to come, provided that the OS itself would have gotten updates, which, in the case of Android 10, sadly isn't the reality.
On the other hand, while the iPhone I got still feels a bit expensive for what I'd want to pay for a phone, the hardware seems nice and the software stack polished! The phone even supports a proper update to the latest released version of iOS and it went without a hitch! Most of the apps I'm used to are also available here and I never really felt all that lost, despite the switch.
Aside from the blunders in this post, modern smartphones are pretty nice, even if I'd still prefer more control over the devices that I've bought.