When content is not hardcoded, it's a pleasure to maintain. A CMS for a native iOS app is a way to unhardcode content by making it accessible to editors and enabling live updating of the in-app content – without resubmitting the app to the App Store.
This article examines the topic of an iOS CMS, showing what to expect from such a product, and what options are currently available.
Last updated: October 12, 2015.
Table of contents
What do we mean by iOS CMS
An iOS CMS is a CMS for putting content into native mobile apps. It's a subgroup of a larger mobile CMS family – you might be interested in reading a comprehensive overview of those.
An iOS can be compared to a web CMS, which is mostly intended for building websites. While there are ways to use WordPress and Drupal as a mobile backend, the drawbacks oftentimes don't justify the efforts (see a brief overview of headless CMS options, showing pros and cons).
Features to look for
An iOS CMS serves two audiences: developers and editors. It should be simple enough in terms of development to compensate the efforts, and at the same time it should be accessible to those who create content. First we'll focus on features which contribute to development simplicity.
A CMS has to come with an API.
From development perspective the best way to get content in and out of any system is to make an API request. A well-designed and well-documented API gives the developer full control: no parsing required, no redundant data coming in. An API-based access to content makes for clean, straightforward, maintainable code.
Custom content structures
CMS shouldn't impose any restrictions on the content model.
CMS should enable setting up content structures according to the project needs – not the other way around. The same level of freedom that any database gives should be available in a CMS, because a developer should not be forced to work around limitations imposed by a system intended to do something else than organizing content (for example, WordPress).
Content delivery infrastructure
A CMS that delivers content is better than one that doesn't.
Setting up a full server stack is fun for the first time, but later it becomes a tiring routine. It's nice when someone (preferably someone trustworthy) has done all the dirty work, so there's literally zero maintenance involved – so that you can start developing immediately. A customizable, flexible, Heroku-style delivery infrastructure is something to look for in a CMS.
Projects get done faster when a CMS comes with SDKs and similar developer tools.
This one also relates to the topic of development simplicity. Ideally, you don't have to write boilerplate code – the CMS vendor should've written it for you. In addition to SDKs, things like IDE plugins, tutorials and sample apps codebase greatly help when they exist, making the learning curve much, much smoother.
Options: existing iOS CMS
Contentful is an API-first CMS, primarily used to power websites and mobile apps, but certainly apt for anything else HTTP-compliant. It consists of an API for content delivery and management, a web application for editing content, and S3-based infrastructure which supports the data delivery. On top of that, Contentful provides SDKs, plugins and sample apps for major platforms and languages, including iOS, Android and many others.
See Contentful website or take a look at the developer center.
Parse is a mobile app platform, offering a REST API and SDKs for all major platforms, and taking care of extended mobile features such as push notifications, analytics and social integrations. It focuses more on mobile app developers, and doesn't come with a content editor and other common content management tools.
See Parse website or take a look at the documentation.
Firebase is another platform for building mobile and web applications. Just as Parse, it focuses mostly on app developers, providing database, authentication and hosting, and isn't really suitable for content management and content editing.
See Firebase website or take a look at the documentation.
The reasons to choose Contentful
If you need to manage content in an iOS app – and maybe an Android app and a website as well – Contentful might be your best option. Here's why.
Mobile delivery capabilities
Contentful ensures content delivery even in network-impaired mobile environments.
- Speed. Contentful infrastructure supports request bundling and has a built-in CDN.
- Sync API and offline sync help apps not freeze when there's no internet available.
- Images API and progressive JPEG support help deliver visual assets faster.
iOS SDK based on Objective-C
Contentful comes with an SDK for fetching the content via Contentful Delivery API. It helps start building native iOS apps faster.
See the GitHub project or read a Quick start guide
tvOS + watchOS + OS X SDK based on Swift 2
There's another SDK intended for developing apps for tvOS, watchOS and OS X. It makes Contentful a CMS for every Apple device: it's an iOS CMS, a watchOS CMS, a tvOS CMS, and a OS X CMS all at the same time.
See the GitHub project or take a look at sample Apple Watch app
A number of sample apps which show how to handle the basic concepts also contribute to developing with Contentful faster.
See the list of examples
Documentation and tutorials
The documentation includes both comprehensive API reference and an overview of the core concepts used in Contentful, while the tutorials explain in detail how to get certain things done.
Browse tutorials or read the docs
Features for editors
Contentful comes with a web application which contains the essential features for editors and content creators who will ultimately be responsible for managing in-app content. The editor helps set up the content structure, create and manage content, and control publication flow, as well as managing the media collection. Contentful completely separates content from presentation, storing the content in Markdown – a clean and widely popular markup language.
Take a look at the content editor or see how to set up a content model
We invite you to try Contentful, a highly developer-friendly CMS.