NFC and Voice Activation in Domino's Windows Phone 8 app13 May 2013
You're tired, hungry and can't be bothered to cook. What if you could pick up your phone and ask it to order you your favourite pizza for delivery without you even having to make a call? Sounds good? Here's the full story from the team at Future Platforms who built the Domino's Pizza app for Windows Phone...
"In 2012 Domino's Pizza added Windows Phone to its range of m-commerce platforms available to their customers, with a Windows Phone 7 app we built for them. The app's successful development was so popular with Domino's that it became a prototype for the company's mobile work going forward.
So in January 2013 we began work on a Windows Phone 8 version for them, looking to make the most of the platform's advantages. We wanted to not only create a 'Domino's store in your pocket', or even an e-commerce store in your pocket, but to take advantage of the new Windows Phone functionality available on WP8. For example, the menu is rendered within the Windows Phone panoramic interface, live tile notifications notify users of the latest meal deals on offer in their nearest store, NFC tags are activated and voice recognition technologycan activate the app with commands such as 'Domino's, feed me' or 'Domino's, I'm hungry'.
"I just sat there staring at the tracker until I heard a knock...I STILL LOVE IT" Jetfire
"The easiest and best way I've ever ordered pizza. Thanks Domino's I'm no longer hungry." Christopher
"Great app! Couldn't ask for anything better. Absolutely the best way for ordering Domino's" Marco
"Awesome, works flawlessly. I use it all the time now when ordering a home delivery. Great app, a must have for all Dominos Pizza Windows Phone fans." Phillip
"Excellent, slick UI makes the whole process simple and user friendly." Aidan
Alex Vitty, Head of UX, explained the process for designing the user journey; "We tried to keep the design as simple as possible in order for the products to take centre stage. We incorporated the Windows Phone 8 modern UI principles and overlaid the new Domino's branding. We started the process by mapping out the key journeys from the website and simplified them as much as possible. We combined the journey for order a menu pizza with customizing a pizza which made the whole pizza ordering process much more intuitive.
Once Domino's had decided to use the NFC and voice activation features we had to define how they would provide most benefit to the users. We reviewed the user journey to establish where they would provide shortcuts to the already streamlined process. This took quite a few iterations before we came to a solution which is both beneficial to the user and shows off the features.
We built the Domino's WP8 app using Kirin, which is all about ingenious and efficient cross-platform development for us. Kirin gives us the option to migrate and develop the mobile app functionality onto another platform very easily. This means that Domino's can move quickly and resourcefully onto emerging mobile platforms in the future, keeping their customers happy and their name synonymous with digital innovation. On this app Kirin made our lives easier because its back end business logic is built generically for cross-platform support.
Windows phone emulator was mainly used for testing during development. The emulator was very good in simulating the features being developed and was very responsive and fast. Real phones were used for key features such as NFC and Voice Activation as well as being used by the test team. Developing with Windows Phone is a totally different experience than, for example, trying to build Java ME apps on the Windows Mobile device in the past, which to be honest was not pleasant. The Windows Phone development environment has a much better IDE and method of development. Setting started with developing the Windows phone apps is very easy with freely available tutorials, samples and tools. However, learning of the concept of Model-View-ViewModel (MVVM) pattern is required for better understanding of the Windows phone development. The MVVM is not a very difficult pattern to grasp. Visual Studio 2012 worked extremely well with Blend, which helped creation of the user interface with ease. Starting up app from scratch with Windows phone is very quick. However, this was sometime a drawback because Visual Studio generated code where were not required, which was acceptable from a generic tool.
Implementation of the voice commands was easy with the Voice Command Definition File. However, getting the phone to behave as required with the voice commands were particularly challenging because some voice commands behaved differently between the phone device and the emulator. This was probably due the hardware differences. Since the app was to be used on the mobile devices therefore the final development was carried out on the device, whereby the commands were arranged in certain order for them to be recognised, in order to overcome the difference in development environments.
Voice activation itself is straight forward to implement and the technology examples and documentation provide reasonable information on the process for supporting voice activation. Testing was quite funny to see as various members of the team shouted various commands at their phones - I'm not sure I could emulate an Irish accent myself though!
As part of the implementation we wanted to provide the capability to dive into the application with deep linking too so commands such as "Dominos give me a deal" could be implemented in the future to take the customer directly to current deals for example. This aspect provides the app with a fun feel for the user and hopefully makes them feel happy when they use this feature to interact with the application and their device.
As a relatively new technology the implications of what can be achieved with NFC are not fully realised at present. There are two primary ways in which the technology can assist the user and in the Dominos application we have both approaches in play; firstly as an embedded tag scan which allows the user to scan a tag at a specific point in time - when they're on the voucher view. Secondly, as an application launch tag which can be used to launch the application - in this case to save a voucher for use later or to take the user to a meal deal. There is a lot of potential for this capability so the features provided by the application may be expanded in the future. Being able to save multiple types of voucher to save money on orders or perhaps being able to drop products into the basket by simply scanning a menu demonstrate how the technology can assist with the users experience of building and placing an order - making it easier.
The implementation itself relies on the same deep linking capabilities mentioned earlier. As with the voice activation features good information exists to assist with the code required to implement the NFC features. The bigger challenge is thinking about how the feature can aid the user and how to make that relevant and if possible fun for the user.
In order to develop and test this feature we needed two extra components that don't currently come out of the box with Visual Studio or the emulator. The first is the tags themselves as the emulator doesn't appear to provide any capabilities for mocking an NFC event so you need some real tags to test with. The second component is being able to write the information we desire to the tags. Some third party tools are available for this but we found the example tag writers provided on the MSDN better for our purposes.
Each time we demonstrated the apps NFC features they were received very well and our tags left with the audience and copies of the app!! It'll be great to see some posters or menus that use these features.
Our strategy with Domino's mobile products is for them to integrate seamlessly into a multichannel ordering process, so our Windows Phone 8 app does everything their e-commerce site does, such as ability to log in to the same account online or on the app, personalized information for returning customers, shopping baskets and a 'Pizza Tracker' to make sure their customers are getting a consistently great Domino's experience no matter what platform they're using.
The UI needs to be consistent through-out so the user is always sure and comfortable with the choices available to them and what they can do to interact with the application and achieve their desired objectives. XAML provides great support for UI consistency with templates and styles that allow for re-use. These assets can also be re-used on other Windows platforms too.
Consider how the interesting technologies provided by the platform can assist your user with how they interact with your app; to make tasks quicker and easier or to make tasks more fun and interesting. "Shake me" to add some sides might be a useful short cut in the application but it might also frustrate the user if it happens in error so don't use a technology feature just because it's there.
If it can't be slick then make it easy; in some places you may need to collect a reasonable amount of information from the user so try to make it as painless as possible.
As with any application the internal architecture of the application itself is important so the application remains responsive every time the user performs a task. Consider your deep linking functionality upfront as this will also help to keep your implementation cleaner and more focused. Async, async, async - make sure everything that can be performed in the background is performed in the background.
Tools for me have been a key feature of the Microsoft technology stack. Visual Studio is slick and efficient and provides just about everything you could think of for developing just about any type of application you could imagine. For business applications the ability to develop secure and scalable back-office applications with front-office components built in the one technology and then deploy those features to users through a range of different devices from Phone and Xbox to tablets, laptops and desktops - it represents a very unified corporate world. The tools help make the Windows development process more fun than building Android or iOS although the tools for these have both improved massively in the last couple of years.
If you're still undecided whether to start building for Windows Phone all I can say is get involved. Currently Windows Phone has a smaller market share than other platforms but that's also a great opportunity to get your app recognised on the platform early. The devices running Windows Phone 8 have been improving too so they really can compete against the phones that run other platforms. With the added benefits of the Windows desktop market and the Xbox gaming platform your app can reach a very wide and diverse audience not being restricted to just the phone and tablet. That said the tablet themed devices such as Surface Pro that can run a full Windows 8 desktop are starting to appear so we now have a tablet that can do more than play games, surf the internet or read email.
I can imagine it won't be too long before I can order a pizza directly from my Xbox, flick through the menu by gesturing at the Kinect and then back to my movie!"