My blog has been a little quiet since I left for Google IO a few weeks ago and this is primarily the reason why. In addition to my day job I've been working on getting up-to-speed on Android development. Google sent me a Droid about a month before the conference and I started playing around with some tutorials and writing a few apps before IO (smart idea to send out 5K Droids to spur development). I really caught the Android bug at the event and thought that the Chatter Developer Challenge would be a great way to kill two birds with the proverbial one stone.
So here is the demo of the application that I just submitted for the Chatter Developer Challenge. It is a Salesforce Chatter for Android app running on a combination of the Force.com platform, Google App Engine and a Google Android mobile handset. It utilizes Force.com Remote Access Applications with 3-legged OAuth for security. The Android application has the following functionality:
- Display your Chatter NewsFeed
- Update your User status
- Refresh your Chatter NewsFeed and store it in the local SQLite database
- Choose a project (custom object) that you are following and view its Chatter Feed
- Update the project's status
- Refresh the Chatter Feed for the project (including field changes to the record) and store it in the local SQLite database
The app does not include the functionality to reply to posts. Since Chatter is running in a Developer Edition and they are only allowed to have 1 user, it seemed rather pointless to respond to my own posts.
I use Google App Engine to tie all of this applications together and provide a coherent security model. So I wrote a small App Engine app that uses OAuth to authorize access to Force.com and my Chatter feeds using Force.com Remote Access Application. Once authorized the Force.com Web Services Connector, running on App Engine, performs the interactions with SFDC such as submitting new status updates, fetching my feeds and displaying them as JSON objects.
App Engine recently started supporting 2-legged OAuth in combination with Google Accounts so that any App Engine application can become an OAuth service provider. Since OAuth support is baked into the Android platform I tried to hook up the Android handset as an OAuth consumer but could not finish in time to submit my entry to the Developer Challenge.
Since Android doesn't play well with SOAP-based Web Services I think this approach in combination with JSON makes an appealing option. If you have any ideas, I'd love to hear them. I expect to write some more apps for Salesforce.com as the Android platform is fairly easy to grok. If you are familiar with using Eclipse with Force.com, App Engine, GWT or Java in general it seems much faster to get an app up and running with Android than with Objective-C for the iPhone. Just my $.02.