This past week was the St. Louis DotNetNuke Hackathon. This was a competition for DNN developers to create a mobile application which interacts with DNN. We had one week to create something worth showing off. So, I, along with another developer at Engage, Abadi, took the challenge.
Abadi has experience developing games for Android phones, so we decided to write a Java application (rather than using Appcelerator’s Titanium Mobile product) which could connect with the Messaging feature introduced in DotNetNuke 5.3. If you have a DNN 5.3+ site, you’ll see a module titled “My Messages” on your profile page, which you can use to send messages to other users on the site.
As we were brainstorming what would make a good DNN mobile application, Rich Campbell, Engage’s president/CEO, tossed out the scenario of being notified of a football game being rained out. We all decided that going mobile would add a lot of value to DNN Messaging, and My Messages Inbox was born.
Before I go into the technical details, let me first point out that the Hackathon is currently in the voting phase (until tomorrow, August 31st, at 6:00 Central), so head on over to view the entries, and vote for your favorite!
So, technically, the application comes in two parts. I worked on an extension to your DNN site that enables communication with the Android application that Abadi wrote. The extension contains a WCF web service which allows a user of the site to authenticate and then get a listing of their messages. I’m very happy with how cleanly I was able to interface with the Messaging code (thanks, in large part, to the separation enforced by use of the Web Forms MVP pattern in the Messaging module). This was also my first big leap into using WCF, so it was great to be able to figure out how to integrate it with DNN without needing tons of configuration and setup (with much thanks to Justin Etheredge’s timely blog post on the subject, as well as Steve Fabian’s WCF DNN Security post).
Abadi was a wizard at figuring out the best way to integrate with the Android interface. He’d never worked with web services in Android before, so we had to catch up on how to get connected, how to parse JSON (and, especially, dates in JSON), and how to layout a standard interface. The most awesome feature of the entry, I think, is the ability for our application to check for new messages in the background, while you’re using other applications on your phone, and receive a notification (just like email). Since we were using Android itself, and not the common iPhone/Android abstraction that Titanium provides, we were able to take full advantage of the multi-tasking built into Android to make that happen.
Overall, it was a lot of fun, and a great learning experience all around. Many thanks for Pat Renner for his management, guidance, ideas, and filming (that’s his voice in the YouTube video), and for Anthony Overkamp for the great images we used on the Hackathon Entries page and the Codeplex site. Remember to go to the Hackathon page and vote!