Top 5 iOS Data Backup & Syncing Solutions

Matthew Campbell, August 3rd

Here is a serious challenge for anyone who publishes an iOS app that manages user’s own generated information. How can we make sure that our user’s maintain control over their own information? Many of my user’s want to be able to export their data, keep their data in sync, use it on their desktop or the web and even share their data with others. iOS does not really provide a satisfying solution for this problem right out of the box.

My app, Tasting Notes, is essentially a SQLite database that stores user’s thoughts on wines they try. The database is located in the documents directory of the app itself and it is not directly accessible by the user. If they choose to get their hands dirty they can get the database and use software to look at its contents but it will look odd to them since the data is formatted as database tables. Also, even though they can get their database out there is no way for them to manually put it back onto their iOS device to restore data to their app.

Their data does get an iTunes backup so they can move their information to new iPhones or their iPad and if something happens they can restore their tasting notes using iTunes restore feature. But, for whatever reason this process doesn’t work for everyone and the process is not really transparent for users.

Over the years my user’s have requested data management features that go beyond what a simple iOS app would normally provide. When I planned my app out originally I decided to trust in Apple and to stick with the built in iTunes backup feature to data management. For better or worse my decision was based on the added complexity of what you would need to do to really give user’s a custom data backup solution.

Here are the most requested data management features that my users (and probably yours) have requested:

When I look at the list above it occurs to me that just using the iTunes backup and restore feature is not enough. There is no easy way for users to have versions of their data and iTunes doesn’t address the last four most requested features at all. The rub is that to implement these features on our own we need to build something that is more than just an iOS app.

Providing these data management features will require either a desktop app (one each for Mac, Windows and Linux) and/or a web based solution. Two years ago all these solutions would require you do roll your own feature completely but thankfully there is at least one web based service that can help us out here. Still, providing data management will add to our responsibilities and will probably require at least a desktop app.

Let’s talk a bit about each of the data management options that we do have now.

The easiest thing that you can do is to simply rely on the built in iTunes backup and restore feature. This does work and will provide the backup features that we need. The biggest problem with this solution is that it only provides backup and users’ want more than a simple backup these days. Also, many people have a real problem getting this to work and lose their hard won data as a result :( .

The next simplest thing you could try is to give your user’s the ability to export their data via email. This is simple to set up with MessageUI and you can provide a routine that saves your user’s data as a text file and attaches this to an email. This gives your user’s export and versioning along it is not as simple as I like my user’s solutions to be. If you use UIPasteBoard you should be able to get that data back into your app to restore your app to a previous state.

Even though this is a rather clumsy solution for users it does possible provide all of what they are asking for: backup, export, desktop editing and sharing. That is, this provides everything but syncing. This solution is also free and cheap for us, but not much more satisfying as a user experience as the iTunes option.

A popular way to implement these data management features is writing a companion desktop application (see Things & 1Password as an example). These apps use low level CFNetwork APIs to provide wifi file sharing between iOS devices and desktop applications. It is feasible to provide everything except for the sharing feature using this approach.

Something that could be nice about this approach is that it gives you a chance to have an “upsell” where users could buy your more expensive product that provides this behavior. However, this could come at a great cost to you since you now must maintain not only an iOS app but a more complicated desktop app as well. Plus, you may even want to have three versions of your app so you can reach the entire audience of Mac, Windows and Linux users.

Something that people is to create their own web service that maintains user’s data. The iOS device will communicate with the web service using built in iOS methods like NSURL to store a local cache of user data and periodically sync their data to the web. This is the type of thing that Evernote and Kindle does and what is so great about this is that your user’s always know that their data is accessible “in the cloud”. You can even provide more websites, desktop apps and other mobile apps to keep users around even if they decide not to use iPhone anymore.

With a web service it would be much easier to implement a sharing scheme although having a web service by itself will not give you that. The same is true for desktop editing and export (users all want CSV files or something else easy to work with). Following this approach to it’s end will require a pretty heavy investment in development. Also, the process of monetizing a web service is not as straightforward or clear as simply selling a desktop app.

You may already know Dropbox as a service where you can store your documents on the web. This is a free service that you can try that will give you the chance to share files between any computer or mobile device over the web. What really sets Dropbox apart from simple FTP services is that is really easy for normal people to use AND Dropbox provides a very friendly Objective-C API (as well as other platforms).

This means that you can implement Dropbox support in your app and let them take care of most of the work. Your users just need a Dropbox account that they can get for free. Then you can use Dropbox to sync or export your user’s data.

I like this solution because it is drop dead simple to implement and it gives users’ the most important syncing features without any clumsiness. Of course, if you want sharing and desktop editing then you still need to do more work.

I see the solutions above as falling into two broad categories depending on what you want to do. Options 1, 2 and 5 are all great if you just want to have a simple app but still keep your user’s data protected. Out of these, I think Dropbox is the best option although all of these may end up requiring more user involvement than you are willing to risk (they all depend on your users to do something which is always a weak link in the system).

Options 2 and 3 (desktop and web service) both require a significant investment. For me, I see these two approaches as the absolute best (actually a web services + application suite across all platforms is the best). But, this could be just a bit much for a solo-developer/business owner/day job employee.

Please let me know in the comments below!

[...] Top 5 iOS Data Backup & Syncing Solutions How To Choose The Best XML Parser for Your iPhone Project Accessing The Cloud From Cocoa Touch introduce access web service using asihttprequest and nsurlconnection,list reasons to prefer using asihttprequest [...]

You must be logged in to post a comment.

  • Hours of videos, demos & screen casts
  • Detailed HANDS-ON Exercises
  • Much Much Much More
  • UIKit
  • Objective-C
  • Core Data
  • More!
  • Learn How To Make An iPhone App right now using my proven system.

    PS: Tons of us are having a blast living off our own code, join us now. Click here to get all the details.