StorageRoom's RESTful API is based on the lightweight JSON data-interchange format. We picked JSON as it is easier to read for humans and has a smaller footprint than XML, which is important for data access on slow mobile networks. Fast JSON parsers are available for all mobile platforms.
Cross-Domain AJAX with CORS
AJAX requests across domains used to be blocked by the same origin policy of the browser. This limitation is still in the heads of most programmers, even though a technology arrived years ago that allows AJAX requests across domains in all modern browsers (yes, even IE8+). I'm not talking about JSONP, which works in even older browsers.
The technology is called Cross-Origin Resource Sharing (CORS) and it enables web servers to provide their resources to web pages on different domains.
Example: An AJAX CMS
You can use CORS without an additional JS library, but in this example I use jQuery to abstract individual AJAX browser implementations.
The content of our blog is managed in StorageRoom. The following example loads the 3 latest blog posts:
Many apps are based on editorial content: your favorite city guide, the cookbook app with the great recipes or the Spanish vocabulary trainer.
But not all apps fall into this category. Many games, social networks and utility applications don't contain editorial content.
Announcements and Notifications
Push Notifications are a great way to inform your users about an action that one of their friends did, or about events happening in the application. Unfortunately, not everybody grants you this permission and pushing notifications too often annoys the users that you painstakingly acquired.
Include announcements from StorageRoom instead of Push Notifications! It's incredibly easy to set up a small announcement view in your app that regularly checks for the latest announcements through our API. Each announcement could contain a text in multiple languages, images and links (external and internal ones). It's all up to you.
With these announcements you can always reach your users. Tell them about the great blog post you wrote, the special promotion you're having today, service disruptions and upcoming versions of your app. Or get some social blessing and ask your users to follow you on Twitter or to like you on Facebook.
Bad reviews from users that don't understand your app are one of the worst problems for app developers. You should obviously design the interface so that everybody understands it without further explanation, but it's easy to mess things up and some bozos will probably never get it.
So you somehow made a huge usability mistake in your new version and users are complaining all over the place? You cannot reach your users and you're having a bad sleep until the next updated version is through the lengthy approval process?
Well, why didn't you include a dynamic help section in the first place? It's simple to set up FAQs, a tip of the day or a detailed help section with StorageRoom. Include the content in your app's bundle so that it's available without an Internet connection after the initial download, but every time the user goes online you synchronize it automatically and adjust your help section based on the feedback you get.
This way your users will learn how to play your game or use your app and you can optimize your copy on the fly.
You are beyond one app and building an app imperium? Probably the most expensive part of your business is to acquire new users. So why don't you get more of your existing users to use your other apps? How could you do this?
Embed a list of all your applications - including descriptions, the icon and screenshots - in every app. Basically a small app store within all of your apps. Easily cross-promote your apps to existing users. And on the Apple App Store, if you use an affiliate link, you even get a commission for your own paid app downloads.
Another option might be to promote services from a partner and to create your own small ad network.
Manage your legal documents in StorageRoom and update them automatically in all of your apps. This can be useful in many cases. As always, check with your lawyers first.
That's it for this post. Do you have any cool ideas that you want to share on how content from StorageRoom can be used in an app?
BeMyApp was a mobile app hackathon for developers, designers and marketers that took place in several cities around the world simultaneously. We at StorageRoom were thrilled to attend the event in Berlin and proud to be one of its sponsors.
App ideas were presented on Friday night, multiple competing teams were formed and the applications were developed in Club Mate powered hacking sessions until Sunday evening.
All teams made a live demo of their applications and a jury had the tough job of selecting a winner. The quality of the applications was incredibly high for such a short development time.
One of our favorites and the winner of the Berlin AppOlympics was UnlockYourBrain, an Android application that locks the screen periodically to disrupt long playing sessions of kids with educational quizes. A series of multiple-choice questions must be answered correctly before the device gets unlocked and the child can keep on playing.
We've been talking to the winning team and they liked the idea of using StorageRoom to manage their app content. It would be the perfect solution to edit and distribute the questions and answers for their E-Learning game.
More coverage of the event can be found on VentureVillage.
Hello WorldFeb 18
A lot has happened since we launched the initial version of StorageRoom last summer, but building the StorageRoom CMS has kept us so busy that we never found the time to create a blog. We're excited to get one up and running now and will try to provide you with weekly to biweekly posts on our service, new features, interesting use cases and the CMS space in general.
Many of our customers already use StorageRoom as a backend to manage content for applications or sites that aren't native mobile apps. So we thought, why use Wordpress, Jekyll or another blogging platform when we already have a very powerful content backend directly at our fingertips?
This blog therefore uses StorageRoom for content management. It relies on the Ruby Gem to load posts through StorageRoom's RESTful JSON API and creates a page-cached version of the blog once a user hits the site. The caches are being expired through Webhooks any time a post is added, updated or deleted. Comments are handled through Disqus and tada, our customized blog was ready in no time, included in our existing layout and with a nice web-based interface for managing posts. Including tags, custom permalinks and Markdown support.
Probably we should create yet another "How to create an awesome blog in 10 minutes" screencast for other developers! Take a look at our API Documentation until that's ready.