Makers of Fine Web Products Since 1999

5 Reasons Why iPhone Application Development Doesn’t Cut the Digital Mustard

Authored by Scott Robbin

Now that we’ve got a couple of weeks under our belts, the discussions and implementations of iPhone apps have started to gain some serious momentum, most notably being the brainchildren of iPhoneDevCamp and Joe Hewitt’s iUI. And while both examples point to a thriving community and serious improvement over previous mobile offerings, the developer guidelines that Apple has offered are just plain….well, underwhelming. Why? What did Apple get wrong? Let’s take a look at 5 very common interface standards that were overlooked when the iPhone application environment was created.

  1. Alarms and Status Updates
    In a normal iPhone application — say SMS or Mail — a user receives feedback whenever activity has occurred in the background, or when the phone is sleeping. Whether it be a chime, vibration or icon update (think number of unread SMS messages), a message is communicated to the user, indicating that there is new information available. Currently, if Safari is not in the foreground, the only means by which to receive a status update is to open the browser window and refresh the web page….err, umm…I mean “application.”

    Solution: Provide the same sort of “numeric” feedback to the Safari icon, showing that an AJAX update has been made to a page. Better yet, provide a Javascript hook that lets you send alerts to the system message window (more on that later).

    iPhone Status Indicators

    fig. 1. Phone and Mail applications indicate that the application has new information.

  2. Fixed Positioning
    Much has been discussed of Apple decision not to support fixed positioning on the iSafari browser. Without repeating much that has already been said, wouldn’t one of the most fundamental parts of application development involved easily-accessed menus, ones of a fixed nature? I’ve heard an argument that it would have been difficult to implement such a feature, given the concept of the viewport and pinch technology. That said, most of the iPhone-specific apps out there are limiting the scalability of the viewport, and are designing for the resolution of the screen itself. If that were the case, then pinch and expansion would be a moot point.

    Solution: Just go ahead and enable it. Search boxes and fixed menus for all!

    Telemoose

    fig. 2. Telemoose provides a great example where a static search box would be nice.

  3. Bookmarking
    Though the plethora of iPhone launch pages is growing (here, here and here to name a few), requiring a user to perform a minimum 3 clicks to access an application (Safari -> Bookmarks -> Link) is less efficient than having them click once from the Home screen. In addition, home screen icons would help solve the problem of status updates (see problem #1).

    Solution: Allow users to customize their home screen, adding shortcuts to Safari bookmarks. Perhaps use a favicon.ico-like tag to grab the icon?

    Blue Flavor: Leaflets

    fig. 3. Blue Flavor has created some great iPhone apps. Apple, why not let them be added to the home menu?.

  4. EDGE and AJAX
    Lord knows everyone loves an acronym. Let’s not give Apple too much credit for bringing AJAX to mobile devices. I mean, Opera Mini has been doing it for a while, but the iPhone, through its iSafari marketing, is pushing mobile AJAX into the spotlight. Great, right? Sure, except for EDGE. The beauty of AJAX applications is to pull a sleight of hand on the user, and update information seamlessly, or at the very least provide cues that information is being loaded. And while providing visual indicators is important to all AJAX apps, there is a sense of burden when having to compensate for EDGE. It distracts from the otherwise elegant interface of the iPhone.

    Solution: Provide interesting loading indicators, and pray that Apple has 3G up its sleeve.

    AJAX Loading Indicator

    fig. 4. Use a loading image to pacify users who are waiting for EDGE to send updates.

  5. Javascript Objects
    If you’ve ever developed a Dashboard Widget for OS X, then you’re familiar with the widget and flipper resources provided by Apple. They are created so that you can perform certain functionalities which are inherent to most widgets. A framework, if you will. Why did Apple choose not to create said resources for iPhone app development, or if created, why did they not release it to the general public? Surely, they’re available. I mean, aren’t the Weather and Stock applications using them? These would be a perfect means to provide hooks into commonly used objects: search boxes and — dare I say it — static menu bars.

    Solution: Let us in on the resources that the big boys are using. Or, if not available, develop ‘em.

    Secondary Comment: Don’t you wonder why Google and Yahoo! haven’t provided iPhone-optimized versions of their search pages? For cryin’ out loud, you have to pinch to view Google search results. They MUST have been privy to iPhone dev before the rest of us schmoes.

    Using the Javascript widget object

    fig. 5. Apple provides a Javascript widget object for controlling such common tasks as onhide and onshow events.

All in all, I have to say that the ingenuity of developed applications has been impressive to say the least. Kudos to all that have been given lemons and have made lemon sorbet.

Please feel free to add to the conversation below with other irks and oddities that may have been left out.

2 Responses to “5 Reasons Why iPhone Application Development Doesn’t Cut the Digital Mustard”

  1. John Allsopp Says:

    just a little nitpick - static positioning in CSS is the default positioning scheme, and is very different from fixed positioning.

    When an element is statically positioned, the browser determines it top and left based on the other elements in the “flow” before it.

    While the word typically means something akin to “fixed” in english, fixed positioning means something quite different in CSS. This is where an element is positioned with respect to to the bounding box of its first ancestor element that has a positioning context (is absolutely, relatively or fixed positioned), but, when the page scrolls, remains where it was initially positioned - unlike the near identical absolute positioning, where the element scrolls with the page.

    Sigh, I know that sounds complex, but a picture tells a thousand words on this one.

    So, static positioning is supported, but fixed is not ;-)

    john

  2. Scott Robbin Says:

    Thanks, John. Great explanation. The article has been updated to reflect a lack of fixed positioning only.

Leave a Reply

Feed Me, Seymour

Recent Gigs: