Building a mobile app MVP with Parse.com & Facebook SDK.
MVP – a Minimum Viable Product
When you see the acronym MVP, software and mobile applications are probably not the first thing that pops in to your mind. But in the world of mobile apps and entrepenuers, the MVP (short for Minimum Viable Product) is an important concept. The term was coined by Frank Robinson and popularized in a book by Eric Ries titles The Lean Startup: How Today’s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses. The quick version of the MVP concept is a stripped down, barebones app that implements a subset of the features of your overall app idea. The most important or innovative features are selected to minimize costs and to judge customer interest in the app. If it proves successful then a full-featured implementation is built with a larger budget. Often an MVP is a gateway to additional capital investment for a startup company. A well-executed MVP can make or break your idea.
Using Parse.com as a MBaaS
When designing aand building an MVP you end up making a lot of tradeoffs. Most mobile applications need a database service to manage user accounts, store data, and perform analytics. You might love to build a custom API that can perform all your backend data storage and tasks precisely the way that you want them, but a mobile application MVP rarely has the budget for that. To get up and running fast, choosing a MBaaS (Mobile Backend as a Service) vendor is a good choice. There’s many different alternatives out there. From the big boys like Google App Engine, Microsoft Azure, Amazon AWS to up & comers like StackMob, Kinvey, and Apple’s CloudKit (yes, Apple as a newcomer – CloudKit debuted at WWDC 2014 and is iOS only). For a recent project we choose Parse.com to provide MBaaS. They’re an established vendor with polished native frameworks for iOS & Android, plus options to ease building custom web applications.
Here’s a few tips for using a MBaas and Parse in particular (though most are quite similar):
- Consider using the facade pattern for any code that talks directly to your API. Eliminate any direct dependencies in the user interface code. This will make it easier to switch out a different backend API, if that becomes necessary.
- Understand the limitations of the underlying implementation of the MBaaS. Many vendors utilize NoSQL data stores (MongoDB is a popular key-value store and is used by Parse.) If you’re not used to using that type of data storage, you may be unpleasantly suprised by some quirky limitations. Here’s some things we ran into using Parse:
- no support for case-insensitive text queries (we had to store an additional column of lowercase text)
- limitations on records returned from a single query, requiring breaking up large jobs into smaller tasks
- time limits imposed on how long queries and scheduled jobs can run
- no SQL DISTINCT operation
- Check out the Sample Code. These MBaaS companies want your business! Parse, in particular, has a lot of very nice frameworks, decent documentation, and over 30 example projects on GitHub.
Integrating with Facebook
Consider if you are building a Social Networking app. It may seem like a no-brainer to integrate with Facebook, especially since they have slick native apps and nice native SDKs for iOS & Android. However, you will want to think about what Facebook can actually offer before committing to using it for more than simple login and authentication. Here’s a few things helpful things to know:
- Facebook Login provides easy and convenient account creation for users who already have Facebook accounts. Which, remember, isn’t everyone (much to Mark Zuckerberg’s chagrin.) Libraries are available for iOS, Android, & web. It’s especially well-integrated with Parse, as Facebook purchased them in 2013.
- Review! That’s right. Facebook has its own review process that is required for all but the most basic use of their APIs (including some uses of Facebook Login.) You get access to the basic public profile when someone uses Facebook Login with your app, but getting data from APIs beyond that will require a “Permissions review.” If you go through the Review process, take some extra time to write out clear and concise steps for the reviewers to use when examining your app. Consider creating a walk-through video if you want to expedite the process. In our experience, Facebook has quick turn around, getting back with some answer within 48 hours.
- Documentation may not be what I would call the strongest point for developers wanting to work with Facebook. It can be difficult to find detailed information, and sometimes I ran into documents that contradicted each other. That being said Facebook seems to make regular updates and improvement to their documentation, especially since they’re frequently adding features and APIs.
- Friends are often the biggest misconception for a developer new to working with Facebook. Many assume that once a user has given your app permission to use their Facebook data, you can quickly spam all the user’s Facebook friends with requests to start using your app. This is no longer the case! When Facebook updated to the OpenGraph API they removed access to a user’s friends list. The only friends you can see are friends that also happen to already use your app. It is possible to facilitate sending one of your users sending Facebook Messages to any friend but that requires the person to have Facebook Messenger installed on their device.
- AppLinks is a way to “deep link” to content in a mobile app. Its an open cross platform solution created by Facebook for iOS and Android devices to support incoming links (from websites or other apps) directly to content in your app. You can also support outbound App Links from you app to other apps that support App Links (or more generic iOS URLs and Android Intents.) We’ve used them to link from Facebook wall posts created by users of an app, which then link back to the app running on the device or to the App Store if a Facebook friend doesn’t have the app installed, yet. You can find more information at Applinks.org or Facebook’s App Links page.
The “Lean Startup” concept is one of the main proponents of the Minimum Viable Product and Agile software development methodologies are perfect for building one. The iterative process of Agile allows entrepreneurs to get their idea in customer’s hands quickly and adjust priorities as feedback comes in.