One the problems with playing in a beautiful walled garden is that sometimes the form gets in the way of function. Often in the Enterprise we have a niche problem that all too often would delight the user, but simply does not fall within the constructs of the walled garden. One such problem that we’ve faced is local cross-application communication on iOS. Mobile applications are by their very nature disconnected. The notion that we are guaranteed fast connectivity to the world is both fallacy and folly. Frank Kreuger makes a point to mention this in his excellent talk at Monospace.
###Scenario 1 (Short)
You’re a consumer facing app, and integrate with a transient app like Netflix. You want to allow users to queue up videos your friends have shared on some social media platform like Facebook or Twitter to the local Netflix app. Right now you use iOS URL Schemes, but that’s JANKY and it really messes with the overall user experience.
###Scenario 2 (Long)
Imagine if you were working on a Dynamics CRM integration (really guys, I knock on it, but it’s pretty darn awesome). Your Salesforce is given two apps: one with the standard CRM features and workflow (contacts, reports, etc…) and a separate Presentation App that can also collect feedback from the on-site customer. The salesperson’s workflow generally follows that they will be able to auto-sync up the day’s meetings, leads, and related documents to their iPad at the some central location with good connectivity before heading off to meet with customers for the day.
The common problem is that the Presentation app needs to get contact data ad-hoc while disconnected, but cannot simply “reach across the hedges” to grab the data from the CRM app.
Our scenario is similar, but more related to government services in rural areas. Thus, connectivity is precious and cross-application communication to both 1st and 3rd party applications is critical to our users’ workflow. These guys SAVE LIVES… for a living, we want to get out of their way and enable them to complete their given tasks as much as possible. So naturally, “you’re not connected to the server” is a fairly poor excuse.
I’m publishing what is a short preview of something I hope to solidify into a solid mechanism for MonoTouch users to create local APIs without the use of stupid URL Schemes or using silly round-about 3rd party services. It makes use of iOS background tasks and should be valid so long as the servicing application was active in the last ~5 minutes:
Please feel free to let me know if this helps delight your users (enterprise or otherwise) in the comments below, on twitter and as always on github: https://github.com/anujb/MultitaskingHttp