I’ve had about half a day to look at the iPhone SDK and start migrating our iMentat code over to it from the toolchain, and I already have a few observations to make about it.
This. Is. AWESOME.
Working with an actual SDK, and a debugger, with actual documentation, just about made me swoon.
It’s the toolchain - but from a parallel universe
Okay, a lot of stuff has changed. I talked with David Brown last night after working with it for a few hours and it became evident that a lot of APIs have been moved, refined, and in some cases, simplified. A lot of these changes made sense - name spaces have been standardized and are more in keeping with the desktop Frameworks.
Other changes also make sense, but apparently come more out of a desire to impose design standards on 3rd party developers than anything else. For instance, it is now assumed that all tables will have only one column, which was not true with the reverse engineered toolchain APIs, where you could create an add multiple columns pretty easily.
As a result, most of our front end code won’t compile and will have to be re-written from scratch. This is, of course, made a hell of a lot easier by the presence of actual, physically arousing, documentation.
On the other hand, our Mentat OS X framework compiled without any hiccups and appears to work well in the new simulator, so that decision choice was a very big win for us.
There are a few things missing
While reading through these documents a few things became clear: although we have made a move up from steerage (web apps), we’re still definitely in 3rd class on this boat. Our applications are basically allowed to run with extremely limited privileges and are forcibly killed when the user returns to the home screen. You can change the look of the iPhones status bar but you can’t actually add or update any icons for your own application.
Weak tea
For an application like Mentat, this is an instant condemnation to total mediocrity. Part of what makes Mentat such a great application is its event handling. When someone in one of your shared projects foists a task off on you or leaves a comment cursing you for the task you foisted on them, you get a notification. On the BlackBerry you get two distinct audio alerts for Mentat events; one for new comments and the other to let you know that one of your team mates or your domestic life partner has just dumped a bunch of work on you.
This is made possible by the fact that, on the BlackBerry, Mentat can run in the background and will periodically poll the server for new events. Mentat isn’t alone in this, Twitterfic does the same thing looking for new tweets. Most instant messengers work the same way.
Since we can’t run in the background, the only option users have is to keep our application running in the foreground constantly if they want to be alerted of new events. This is, you may recall, one of the things that sucks about web apps. Which kind of puts us right back where we started.
Another feature that our BlackBerry customers demanded early on - and now enjoy - is the ability to create a task directly from an email or SMS message. At this point it doesn’t look there will be any ability to add a similar feature for our iPhone customers any time soon.
Apple, please copy RIM a little more
I’ve been developing BlackBerry applications for almost four years now, and Apple has definitely taken a page out of their playbook for dealing with iPhone applications, but they still don’t have feature parity with what a BlackBerry developer can do. When you think about it, this doesn’t really make too much sense, because RIM has always been at least as sensitive to security issues as Apple is being now. RIM’s always had to deal with the same problems, but has still found ways to get developers most of what they need to write great applications.
By default, any application that you write with RIM’s JDE will run on a compatible BlackBerry will run without any code signing. This provides you with just about as much capability as the iPhone SDK lets you have.
You can, however, get much tighter integration with the BlackBerry’s lower level features by ponying up $100 to RIM and getting a code signing certificate. This lets you write applications that can integrate with email, interact with Bluetooth hardware, play around with the status icons, and lots of other fun things.
We know from working with the toolchain that there are APIs that will let you manipulate your own icons in the status bar, and that applications can be run in the background without being terminated. For applications like ours, or Twitterific, we really need the ability to run backgrounded in order to realize our full potential.
Proposal: open this up for Enterprise Apps
One potential way to deal with this is to re-expose some of these APIs to Enterprise applications and handle their behavior at runtime differently. Springboard could examine the application at run time and determine how to handle it - either terminate the application after a polite wait, or simply issue a notification to it that the user has returned to the home page and let it figure out what to do itself.
Joining the Enterprise developer program costs three times as much as the regular development membership but I would do it in a heartbeat if it meant that we could have access to this kind of functionality.
Technorati Tags:
brainmurmurs, Mentat, os x, iphone sdk, apple
GTD, iphone sdk, os x, iphone development
Filed under: Dan, mentat by Daniel
No Comments »