Refactoring through AppStore Rejection

| | Comments (0) | TrackBacks (0)
As the story of Podcaster makes its rounds, I thought I would share my own tale of the opaque AppStore approval process.

I was a Treo user for years - first the 650 (Palm OS) then 700w and finally 750 (WinMo 5 then 6).  Lots has been written about the various WinMo versions so I won't dig in here.  However, they were at the very least 'functional', meaning they did over the air sync with Exchange for email, calendar, contacts and tasks.  They also had a cool feature that became my most common use case - you could turn on the phone, start typing the name of a contact and it would list out the search results, where you could select the appropriate number and dial.  The actual sequence to call, say, Jeff would be to hit the On key, hit the center key to complete the unlock, type J E then choose Jeff's mobile number from the list using the arrow keys (down arrow), hit the center button to dial and done.  In reality, it was no clicks prior to searching, and only one click to dial after searching.

Then the iPhone 3G came about with Exchange integration, and I felt I earned it, finally, after putting up with WinMo and Palm for so long.  And I do really like the phone, but it isn't all that much less crashy, etc.  The browser pretty much makes up for all shortcomings though.

Then I tried the Contacts app.  Whoa.  First, it was days before I figured out how to reliably hit the search icon.  Most of the time I'd hit a letter or hit the + button to add a contact.  Then, evil of all evils, they made you select a contact THEN select the number from another screen.  So, it looks like:
  1. Click Phone icon
  2. Click the Contacts tab (this is non-deterministic, you could be on any tab when you launch)
  3. Click the top bar, or the little search icon to locate the search box (this is also non-deterministic - you could be anywhere in the scroll list when you get to the contacts tab)
  4. Click the search box to bring up the keyboard
  5. Type your search
  6. Click the contact you want and visit the next detail screen
  7. Click the right number.
7 clicks to find a number and dial.  On a mobile Phone.  That most people use one-handed.

So I set about to write SearchDial

Take 1
ND-SmallIcon.png
It actually started out called "Name Dialer".  The goal was the least possible amount of clicks to search and dial someone.  The steps are:
  1. Click Name Dailer
  2. Type your search (keyboard is already up!)
  3. Click right number (each number gets its own row in the search results)
This seemed like a no-brainer.  No frills, no extra toolbars or tab bars, no buttons.  Maximize the space and minimize the clicks. 
ND-screen1.jpg

I submitted to the AppStore. and waited, and waited.  After a full week, my efforts are rewarded with:
Your application, Name Dialer, cannot be posted to the App Store at this time because it violates section 3.3.5 of the iPhone SDK Agreement; "Applications must comply with the Human Interface Guidelines and other Documentation provided by Apple."

Your application duplicates the functionality of the built-in iPhone application Contacts without providing sufficient differentiation or added functionality, which will lead to user confusion.

Steps to dial using Name Dialer:
1.  Select application icon.
2. Enter letters to search for name.
3. Select name that is presented (multiple options for multiple phone numbers). Number is dialed.

Steps to dial using Contacts:
1. Select application icon.
2. Enter letters to search for name.
3. Select name.
4. Select number to dial.

So apparently someone could download, install, then run and application and be confused.  Also, they clearly don't consider saving clicks as a feature, which is odd.  Seems like a company so focused on usability would see the value in saving time and clicks, especially on a mobile device.  So I was pissed.  Wrote back to them, complained to friends, etc etc.  Its no small task to get an app built and published, and to be stuck with no recourse was amazingly frustrating.

Take 2

Some friends gave me some advice and ideas.  Basically, don't fight The Man, pay homage, swallow your pride and anger, and keep moving forward.  Righto.  So I introduce some new features such as AutoFavorites and color coding by number type.  I switched color schemes to be extra different (plus I think it looks cooler.  Black is the new black I hear).  AutoFavorites lets you sort numbers based on either A) how many times a number has been called or B) most recently called numbers.  Both the AutoFavorites sort order as well as the various colors for number type (home, work, mobile) were configurable. 

ND-screen1.jpg

OK.  Now it has features that the built-in system definitely doesn't have.  Plus it looks way different.  No way someone would be confused.  So I submit and wait another full week for this:
Your application, NameDialer, cannot be posted to the App Store at this time because it violates section 3.3.5 of the iPhone SDK Agreement; "Applications must comply with the Human Interface Guidelines and other Documentation provided by Apple."

Your application duplicates the functionality of the built-in iPhone application Contacts as well as the 'Recents' phone list without providing sufficient differentiation or added functionality, which will lead to user confusion. 

OK.. I handled it better this time, almost expected it.  They still don't value saving clicks, so its up to whatever else I can get it to do.  So, back to the drawing board.

Take 3
SearchDial-57.png
So now I'm on to SearchDial.  The name now reflects some of the new features: search by Phone Number and search by Company.  The built-in app doesn't do the number search (or display the company name in the search results even though you are searching on it.  Talk about confusing), so I figured that would be the clincher.  Plus, its a useful feature that the Treo app also had, and was requested by some early users helping me test.  I also took some time to make the colors better.  The downside of 'search by number' is that I have to preload the address book, making things a bit slower on startup.  And leading to its major flaw in the way I grabbed the contacts.  More on that in another post.

SD-Screen1.jpg

Submitted to AppStore, and wait the week again, and...
The status for the following application has changed to Ready for Sale.

Finally!  Of cousre, it was only hours before the bad comments poured in and I broke out into a pale sweat.  No testing I or the AppStore folks (who DO test these things, trust me) found this.  After all that, it had a critical bug causing it to just plain not load contacts for most people.  The error turned out to be a quick fix, and it would have been out the following day if it wasn't for this crazy long review process.

While I take responsibility for the boneheaded bug.....bugs happen.  Even Apple shipped iTunes 8 that blue screened Windows boxes.  Of course, their update appeared a day or 2 later so the damage was mitigated.  Lucky them.  I expect as people all over the world run this app in various local languages with all kinds of different contacts, syncing, etc there will be other bugs.  And I'm equally sure it will still take forever to get the updates out.

So, while I was flatout pissed at Apple the entire time, the rejections lead to a more feature rich product that is (or will be) better for it.

However, that does not excuse their behavior, especially for some of the other rejected apps.  Building these apps takes a huge amount of time and effort (and I have a day job, this is a side project).  They offer no support through the process, its a total black box.  Emails go unanswered, as do phone calls (i just spent 3.5 hours on hold before giving up).  Its unpredictable what will make it and what won't.  You could make it in and get pulled later on.  I mean, who wants to build a business around this?  Who wants to build more than Koi Pond if there are no guarantees your efforts will pay off?  Why would a VC or company invest in this with no say in a totally opaque process?

They may have opened the door to a whole new platform and marketplace, but they certainly didn't close the door on the competition.  Its wide open for somebody to do it better. (Android and even WinMo are watching the mess with glee I'm sure).



0 TrackBacks

Listed below are links to blogs that reference this entry: Refactoring through AppStore Rejection.

TrackBack URL for this entry: http://www.ibranc.com/mt/mt-tb.cgi/1

Leave a comment