I'm excited to announce that we've built our first Drupal-powered apps for iOS and Android. The apps are in the Android and Apple marketplace and are helped to improve one association's yearly technical conference.
There are times when apps are overkill and unneeded. Frankly there are already too many apps out there. But as we as a company continue to focus on conference sites, this was an obvious use case where taking the plunge into mobile app development made sense. It’s nearly become standard to have an event app at major conferences around the world.
At events, internet connectivity isn't that reliable and attendees, speakers and organizers are able to navigate the event much easier with the right mobile tool. Conference sites provide more media attention for sponsors and also provide various ways for networking.
In this post, I'd like to discuss our recent work building two mobile apps---one for Apple iOS and another for Google Android. Specifically in this post we’ll look at what we built, and in a future post, we’ll look at how we built these apps using different technologies (Drupal, iOS and Android) as well as some technical and business takeways we gained from this process of integrating a CMS like Drupal with a mobile device.
Let's take a look at what we've built.
Drupal-Powered Conference Sites
One of our main focuses over the last several years has been event and conference sites.
Drupal handles content, users and commerce with increasing sophistication and flexiblity. In Drupal 6, we used COD to build club and simple event management systems. In Drupal 7, we decided to shift away from COD and Ubercart and have been building our own events registration system using Panopoly, Drupal Commerce and Registration.
The first fruit of this work was a romance writers conference that last year took some 150+ orders in the first 10 minutes for signup. This year the same event was even more rapid fire and took 200+ orders in the first 3 minutes after registration opened!
We love building Drupal sites for events so much that we are, in fact, also working on our first alpha release for this platform called "Events for Drupal".
Along with that site, this past year we've gotten the chance to test and refine the system on other projects.
Several months ago, SPE Environomental Division came to us to overhaul their site to better deal with their yearly event, GPEC (Global Plastics Environmental Conference). Specifically, we cleaned up their legacy content and sessions and built a clean flexible design and layout. We organized their content and products around their yearly event and we empowered them to handle their own ecommmerce needs and registrations.
Along with a full upgrade to handle registration and paid sponsorship, we overhauled their session and awards submissions processes. Potential speakers could submit their abstracts months before the event and admin could manage it from approval to scheduling and room assignment. This allowed them to create a dynamic schedule and, most importantly for their app, to make their content available for mobile distribution.
So, with the content exposed via an API, what did we build?
What We Built: A Conference App with a Drupal Backend
To be honest, it's not that uncommon to see conference apps these days. It's one of the easier mobile use cases to build for. (There are even several companies that provide a platform for generating your own apps for events, like Guidebook.)
Most conference or event apps provide the following features: event schedule, session and speaker info, venue maps and various "about" pages as well as perhaps a facebook or twitter feed.
We wanted to have all of this along with one key additional change: it needed to be dynamic. In particularly, we wanted a dynamic "my schedule" functionality; a way that the user could mark sessions they wanted to go to and a dynamic my schedule display. This "marking attendance" needed to be available and synced on either the site or app. This would then allow the "my schedule" page to be seen on the app, in the site or even in an exportable and printable format.
In the Drupal world, there are also several conference apps. There is nearly a new app for each DrupalCon. These apps provide attendees with the schedule and other event info. While these "Drupal" apps are quite helpful, they are in most cases static. The event content (sessions, rooms, speakers, etc) was exported and simply built into a page-by-page functionality. Some do provide data pulls but I didn't see any that went far into the functionality we wanted, like login and “flagging” sessions to attend.
In many cases this static format is enough, but we felt that these apps missed out on providing a more dynamic and interactive experience. In big events with dozens or hundreds of sessions, a conference without a personalized user schedule is not that helpful. Many attendees end up using a paper version for the simple ability to circle and markup the sessions they want to go to.
As such, we took the more dramatic choice to build a dynamic app integrated into the website's backend.
This approach allowed us to provide a way for attendees to download the most up to date session info (meaning you didn't have to wait to download a revised version of the app itself, just the content). Event administrators could change the session info even minutes before the event and users could update and see it.
The method also allowed attendees to create and manage their own schedule. Users could mark sessions they wanted to attend either via the site or one of the apps. They could then view their personalized schedule both before and during the conference. From a user perspective this was a huge success.
From administrative side, since the attendence data was synced with the site, it also gave the event organizers some rough total attendence numbers for different sessions BEFORE the actual start. Sessions that appeared to have higher demand could be moved to bigger rooms accordingly.
Like most conference apps, we also chose to put various bits of static info in the app. As I had to explain to different organizers, you can't just extend an existing site into a mobile app. Unlike a CMS like Drupal, each dynamic app functionality takes longer to develop, so where the content was likely to stay static, we built it into the app as static. As such, we elected to keep our about pages, organizer pages and sponsor lists as embedded content.
Conclusion:
From a technical perspective, building Mobile Apps with Android and iOS wasn't that easy. It's also not without additional time and cost. Many times a responsive, mobile design is enough since it allows users to have a reasonably good experience on whatever device they use.
From my personal builder and developer perspective, it wasn't quite as hard as I imagined it could have been either. Neither easy nor hard, this approach carried various challenges.
For iOS, we were fortunate to have a preexisting library that made developing an iOS onto of an existing Drupal Site: Drupal iOS SDK from Kyle Browning. This library significantly helped in creating our iOS app. Specifically, this library abstracted out several common features like logins, pulling node data, etc as well provided an add-on library for integrating flags.
Like a lot of US-based development, we started with iOS and then built the Android app after. There was no doubt though that we were going to build for both platforms. Unfortunately there wasn’t a preexisting library to use but the basics and structures in the iOS library helped clarify what we needed for the Android version.
In conclusion, mobile apps are the more recent and current tech wave. In some cases mobile apps are superfluous. But for Drupal-powered conference sites, a mobile app can be a good fit to improve the user experience and interaction before, during and after you event.