It's 10:45 am on Sunday and I'm headed to Mission Beach Cafe for brunch. Turns out there is a 30 minute wait. Par for the course. I'm early so I figure I'll open up Yobongo and kill a few minutes talking to people while I wait for my friends to arrive. Only one problem, I've got one bar on my phone and the data connection isn't working. Text messaging still works though I notice as I receive an sms saying one of my friends is 5 minutes away.
And therein lies one of the reasons why so many apps are building on top of sms: it works when your data connection doesn't. To be clear mobile internet connection coverage will surely improve and likely at some point obsolete sms entirely (hence the reason it's not much of a concern to Yobongo long term). But in the meantime sms could be a good stopgap were it not for that fact that in order to work over sms apps are forced to effectively shell out to the Messages app on the iPhone, and once you're in Messages every app has effectively the same experience. Not only is there no way to differentiate visually, but the interaction between the user and the service is limited to sending 140 characters of text. It's like being thrown back into the command line days of computers. This is 2011 on a mobile device with one of the most beautiful displays available and we're stuck with the green bubbles with text in them.
There are two pieces to the sms equation: sending and receiving.The sending part already partially exists. There is a component in the iOS sdk that basically presents a pre-filled sms window in which the user has to click send to actually send the sms. Apple doesn't let you send text messages on behalf of the user except using their prebuilt control because otherwise malevolent apps could spam all your friends using your phone number and sms quota. It would be even nicer if you could send an sms and just have an alert pop up like an in app purchase, but it is at least technically possible to send an sms from an app. Consider this half of the equation to be half finished.
On the receiving end there is currently no solution. Your server can respond via sms, but that sms goes straight to the messages app into which your app has no visibility. This effectively makes it so that sms can only be used for outbound communication. Hopefully, as part of revamping the way push notifications work on iOS, Apple will build a way for apps to be notified of a text message sent by a specific number. That way when your server sends the response message the app will get a callback and can handle it. With this piece in place the circle is complete and we can use sms from within the app. I have a feeling a lot of people would send sms notifications instead of push notifications in that case despite the cost just because sms notifications can't be turned off. Obviously this is a potential avenue for abuse the most likely solution to which would be to build an sms blocking feature for the phone on a number by number basis. However it's actually irrelevant to this feature discussion, since any app that has your phone number can already spam you, making the app aware of incoming sms just adds a little more honey to the pot.
If that's not enough, my real dream is for a socket connection that degrades gracefully to sms if the data connection is lost. In essence sms would become a protocol over which data is sent the same as tcp. It would be slow, but it would be better than nothing. It reminds me of the "IP over Avian Carriers" protocol that was designed to carry internet traffic by homing pigeon (See RFC 1149 from April 1, 1990). Joking aside, being able to get a notification on an incoming sms is a serious feature request that I feel could add great value to many communication apps until we finally get reliable 3g coverage everywhere.