The iMessage Flaw (aka the iMessage Bug) Detailed and Explained (mostly)

Man, this is going to be really long. How should I start?

So Apple introduced iMessage with iOS 5. Just like iOS 5 itself, there are, rather than calling them bugs, what I will term inconsistencies or ideas that aren’t very well thought-out before execution all over the OS, and iMessage’s authentication process is one of those.

iMessage itself is a wonderful idea, it relies on data only, is completely integrated in the what most think of as the SMS app, and most of all, is completely transparent to the clueless user.

You get your iPhone 4S (or any other iPhones capable of running iOS 5), pop in your sim card, your sim card then discreetly sends an SMS to Apple to register your phone number on iMessage’s servers, and from then on every time you try to SMS another iOS 5 user you wonder why the text bubble turned from green to blue. “Ah, maybe this iPhone is smart enough to detect which of my friends are cool as blue and which are green and boring”, you may think. And then you wonder why you are billed for 20 SMSes instead of the usual 5000 SMSes at the end of the month.

iMessage, therefore, really works, in typical Apple fashion, seamlessly.

Or does it?

For those in the know, iMessage works not just with your phone number, but with any email address-based Apple ID as well. If you set the iMessage Caller ID on your iPhone as your Apple ID instead of your phone number (non-iPhones can only use Apple IDs as Caller IDs), your iMessage conversations will magically duplicate themselves across all your iDevices (with the same Caller ID), including all your spare iPhones, iPod Touches and iPads (and your Macs too, with the new Messages.app beta). This is wonderful, for you can start a conversation on your iPhone and continue on your iPad. The confusion sets in when you, like others, by default, set your iPhone’s iMessage Caller ID to your phone number and start wondering if Apple’s advertising if iMessage as being able to sync across devices is bullshit. But then, this is a topic for another day.

In recent months there’s been reports about iMessage “malfunctioning” by sending messages to wrong parties or going missing, but most of those reports only painted a picture of the “symptoms” without going anywhere near addressing the real cause of these “symptoms”. Others, like theives-blog Gizmodo, only used the chance to throw shit on Apple. Too bad they don’t have any credibility left for anyone to believe their bullshit.

iMessage, however, does have a few problems stemming from their authentication and “pushing” process, and I will attempt, from the very limited knowledge I have, to detail what is happening and explain why.

I have personally tested iMessage extensively using a combination of phones and sim cards and below are the three scenarios I have encountered often. The phones I am using are the iPhone 4S which is my main phone, the Galaxy Nexus my spare phone, and another iPhone 3GS. I am using 3 sim cards, let’s call them Singtel, Starhub and M1 (which really are Singtel, Starhub and M1 sim cards). The Singtel is my main sim card with a 9-number, and the M1 is a prepaid sim card with a 8-number. The Starhub is a DATA-only sim card with a 8-number.

What are the possible problems?

Situation 1

I have been using the Singtel sim card in my iPhone 4S since the day I bought the phone, and iMessage is obviously activated with the Singtel 9-number. Recently I decided to test out ICS and switched out the Singtel sim card and started using it with the Galaxy Nexus. However, there is absolutely no way I can get any work done on Android with its crappy third party apps so I needed my 4S as well. To ensure it works properly I inserted the DATA only Starhub sim card into the 4S, without rebooting the phone even once. This causes a strange situation. Under Settings>Messages>Receive At, listed at the top is “Verifying 9-number(my Singtel sim)” and at nowhere is the Starhub 8-number listed there despite the Starhub sim card being inside the 4S at that very point of time. “Maybe iMessages sent to my Singtel 9-number will just fail and default to SMS then, since the 9-number isn’t verified”, or so I thought. Over the next few days, many have came up to me and asked why I didn’t reply their messages. I simply didn’t receive them on the Galaxy Nexus, which at that point of time was holding the Singtel 9-number sim card. I didn’t even receive them on the iPhone. I then reinserted the Singtel sim card into the iPhone, reactivated iMessage under the 9-number, but the messages never came through. They were all blackhole’d, sent to a dimension where humans don’t exist.

Situation 2

I was setting up my old iPhone 4 for my mum one day by restoring it through iTunes. When the activation screens came up, I just inserted my Singtel sim card to get through the activation screens as per pervious iOSes. Next thing I know, for the next few days, because my mum haven’t got around to getting her sim card transferred from her old phone to the iPhone 4, she was receiving every single one of my iMessages. And that’s like 20 threads per day, a few hundred messages every 24 hours.

Situation 3

In order to solve the problem of missing iMessages, I reactivated my iPhone 4S’s iMessage using the M1 sim card (iMessage was working properly when I tried to send messages to the M1’s 8-number). I then put my Singtel sim card in the Galaxy Nexus. So at this point of time my Singtel 9-number shouldn’t be associated with iMessage or any Apple devices. I waited 10 minutes just in case. Then I did the test.

I iMessaged the Singtel 9-number from my Mac using Messages.app with my Apple ID. It failed to send. Great.

I iMessaged the Singtel 9-number from my iPhone 3GS (using the Starhub 8-number). It failed to send. Great.

I iMessaged the Singtel 9-number from my brother’s iPhone 4S. It sent. And shown the message to be “delivered”. Of course the message is nowhere to be found on all my phones. Not good.

I got my friend KPS to iMessage the Singtel 9-number. It sent. And shown the message to be “delivered”. Of course the message is nowhere again. Not good at all.

I then iMessage the Singtel 9-number, again, using my mum’s iPhone 4. It fail to send. Whatever.

These three situations are extremely common in today’s world, and especially for Singaporeans since every 30-40 year old changes his or her phone every 6 months or so, and thus either have a large collection of old phones to switch sim cards on or regularly sell phones away to make room for new ones.

Consider Situation 2. Say you are a girl selling your iPhone 4 to some (creepy) old guy (let’s call him Thomas). You wiped (and by that I meant you restored your phone through iTunes, completely reformatting the phone) your phone and brought it to show Thomas at the nearby McDonalds. Thomas says, “Yeah it looks good, but I don’t know if the phone part of the phone is working. Can you show it to me? I don’t have a sim card with me though.” So you foolishly popped your sim card into the phone, and proceed to show Thomas that the phone actually works. Thomas happily paid you the money and took your phone. Unfortunately for you, Thomas never intended to put his own sim card into the phone. From the very moment you inserted your sim card into the wiped iPhone 4, Thomas has access to every single iMessage you sent, as well as every single iMessage sent to you. He will have a copy of all your sexting conversations with your boyfriend, your secret chats with your girlfriends, and the dirty chats you have with your best friend’s boyfriend with whom you are having an affair with. Thomas pwns you.

This is also a problem when you lose your phone, or if your phone is stolen. Yes you can remote wipe your iPhone by Find My iPhone, but because your sim card is still in the iPhone when the phone is being rebooted after a remote wipe, iMessage on the stolen phone will still be tied to your phone number. I imagine in this case, that one should firstly deactivate the sim card through your telco, before issuing the remote wipe. But all these is way too complicated for someone who just lost his or her precious iPhone.

Consider Situation 1. Say you are overseas, in a place like Hong Kong, where 3G prepaid sim cards are available for cheap. You want mobile internet, so you bought one, took your sim card out of your iPhone 4S and popped in the 3 3G sim card you just bought (3 is a carrier in Hong Kong, UK, and many places where democracy can be found. It’s never coming to Singapore.) without rebooting the phone. The mobile internet works, and you are happy. Are you really? After that one week of vacation, you return back to Singapore where a very angry girlfriend is screaming at you because you ignored all of her iMessages. But when you say you didn’t receive any messages she pulls out her iPhone, shows you the “delivered” status underneath every single text bubble she sent, and proceeds to give you one hell of a tight slap without any advance warning.

Solution for Situation 1

I somehow found out, through trial and error, that the “Verifying whatever number” error can be resolved simply by doing this.

After you inserted the new sim card, turn iMessage OFF. Then shut down your phone. Turn it on again, then turn on your iMessage. If it doesn’t work, turn off and on iMessage a few more times, it should work.

For some reason, unless you reboot the phone, iMessage never forces itself to recheck the phone number of the current sim card, and will instead try to verify if the current sim card has the same phone number of the previous sim card. When the phone’s iMessage is activated with the new number, your previous sim card should now not be associated with iMessage. But as we all know, Situation 3 happened. And cannot be resolved. It seems to be a problem of the iMessage servers holding on to the number-phone association for far longer than it should, despite the same phone now being activated with a new number. So if you are overseas and want to use a prepaid sim card with your iPhone 4S, pop in the new sim, do the above sequence, check that the iPhone 4S’s iMessage is activated with the new prepaid sim card number, then pray that the important messages go through via SMS to your spare phone (you do have a spare phone for overseas travel don’t you?) instead.

Solution for Situations 2 and 3

The solution for Situation 2 is simply not to put in your sim card once you restored that phone unless you are planning to use it again. Either that or you secretly want Thomas to read all your messages.

The solution for Situation 3? File a bug report with Apple here. Or go to their forums and scream and shout there.

You could always try to get most of your iPhone owning friends to message you through your Apple ID instead and it will solve most of the “blackhole’d iMessages” problem, but clueless folks aren’t going to “SMS you on an email address”, so you will still get some iMessages sent to your phone number no matter what.

What is really causing all these problems? To answer that we have to first understand iMessage’s phone number registration/authentication process. When you first enter a new sim card, or set up your iPhone, there is a hidden SMS exchange to inform Apple’s iMessage servers that your iOS device is now registered to your phone number. This is probably also why when you enter the number of your friend who has an iOS 5 phone, iMessage’s servers will inform you that your friend is using iMessage by turning the color of your friend’s number from green to blue.

If you ever pop in a new sim card, you will need to toggle and reboot the phone in order to force a new phone number registration process as I have detailed earlier.

The problem with the registration process, however, is that when you removed the sim card, Apple’s servers aren’t notified by the same hidden SMS exchange. Well, there’s really no way to notify (by SMS anyway), since when you removed that sim card the iPhone has no way of sending a SMS.

This is why, should you ever remove the original sim card from your phone, say for example, if I removed the Singtel 9-number sim card from my iPhone 4S, and just leave the iPhone on wifi without inserting a new sim card, my iPhone will still receive iMessages sent to my Singtel 9-number despite the sim card not being in the iPhone.

Thus maybe one solution will be to have the iPhone scan for the presence of a sim card, and if it isn’t in the phone iMessage should then just default to using an Apple ID instead, but maybe that in itself will cause other problems.

The problem identified in Situation 3 could be explained if for some reason, some of Apple’s servers were holding on to a certain number-device association even after that certain device has now been activated with a new number, and maybe deletion of that original number-device association isn’t done cleanly across all of Apple’s servers. And this seems to be something Apple definitely has to fix on their end.(I seriously show my lack of knowledge on this part of the problem, argh)

Despite all these problems/flaws, iMessage certainly is crazily popular among the masses, for in every ten messages I receive, only one is green. Apple will have to improve their iMessage implementation though out iOS 5’s lifetime for sure, and hopefully by iOS 6 it will truly become flawless(okay now you know that’s bullshit right? No software and service is flawless. But whatever.)

You can follow MacRyu at @ryuworks on Twitter and @ryu on App.net.

  • Phred

    Thank you. Good explanation. I steer clear to avoid black holes!


About MacRyu.com

MacRyu is the Mac Blog by Singaporeans and for Singaporeans. It was started in April 2007 as a side project of the then President of the Official Mac User Group of NUS, Ryu, and grew to become possibly one of the most popular Apple-related sites based in Singapore. MacRyu hopes to provide you with more Mac-related info, thoughts and stuff, from the Singaporean perspective.

Subscribe to RSS (site)

MacRyu’s Web Stats

Interested advertisers can click here to find out more about MacRyu.com's pretty decent web traffic stats.

P.S. Nice! We've hit 284122 hits in July 2010!

P.P.S OMG! We've hit 407548 hits in Oct 2011!

Steve Jobs (1955-2011)

Categories

Google Search