Building an iPhone App that works with Drupal

One of my projects is working on an iPhone app that will pull its content from a Drupal 6.x installation. Instead of authoring, editing, and publishing content and images in two different places, the iPhone app will use the content directly from the Drupal CMS, using Drupal’s Services Module and JSON.

I did some pretty extensive research on this, as I thought there had to be some sort of generic iPhone app client for Drupal already. Unfortunately, there are more people looking for this problem than there are solutions. The closest thing I found was BeerCloud for Android and Drupal. They provide a library for Android mobile apps,  drupalcloud, but I haven’t seen anything for Cocoa Touch.

As I dug deeper into the problem, I figured out that the reason there wasn’t a generic Drupal iPhone app client is that there wasn’t an easy way to map a Drupal Node to the iPhone device and have it be a usable mobile application - some customization is going to be necessary, especially if you are using CCK with the node to have custom fields.

What I’d like to do on this blog is present an ongoing blueprint for how I’m building my iPhone app, along with the changes and modifications I’ve made with my Drupal installation. Hopefully it’s useful to at least one other person, but it also gives me a place to record my design notes and thoughts.

The most important decision I’ve made so far has been to use the Three20 framework for my iPhone app - this is the framework that the Facebook for iPhone application is based on. The features of Three20 I’m most excited about are the network-aware data model and the ability to use URLs for in-app navigation.