Over the past several months, I’ve been hearing rumblings that Apple is looking into giving developers better ways to share information between apps. Currently, apps act on their own and offer very little cross-communication options aside from Apple’s ‘Open In…’ command.
Back in September, I laid out what I called the strange purgatory of third-party apps sharing on iOS. In that article, I mentioned what I had heard Apple had in the works:
What we’re hearing, and have been hearing for a while now, is that Apple has set up a system similar to XPC on the Mac, for iOS. To simplify greatly, it allows small processes to be run independently in order for certain tasks to be performed separately from the main functions of an app. As developer Grant Paul points out, Apple’s Mail app already uses this technique for the compose view.
Apple has created these special view controllers, components of iOS that display objects on the screen for you, in order to make their fancy new action sheets work. And they could easily open them up for third-party developers to take advantage of as well.
This would, effectively, open up an official gateway for inter-app communication, one of the biggest major wishes of almost every iOS developer I talk to.
F**k it, we'll do it live!
Our biggest ever edition of TNW Conference is fast approaching! Join 10,000 tech leaders this May in Amsterdam.
I wasn’t really at liberty to go into it further, but now, developer Oleg Begemann has broken down the system that Apple is using already in its own apps on iOS, called remote view controllers. The whole article is worth a read if you’re a developer wondering where Apple may take sharing in the future, but here is the money section:
Remote view controllers are an exciting new feature for iOS. I sincerely hope that Apple will use this technology in iOS 7 to enhance data sharing and communication between third-party apps without compromising the iOS security model. We need it.
How could this work? Apple could ask developers who want to provide a sharing UI to other apps to include a second executable in their app bundle. This executable would be an XPC service that looks a lot like the
MailCompositionService.appwe analyzed above. Its main component would be a stand-alone view controller that was able to communicate via XPC and implemented some standard Apple-defined protocols named something like
UIActivityViewControllerwould then maintain a list of registered sharing services and present these options to the user.
Begemann mentions iOS 7, but I’ve heard rumblings that it could arrive even sooner, perhaps in a point release of iOS 6. But now the Maps debacle has a lot of engineering staff assigned to it, so I’m not sure how many new features we’ll see in upcoming ‘mid-season’ releases. It all depends on whether the staff dedicated to that has anything to add to the Maps conversation or not I suppose.
Anyway, Apple’s new share sheets in iOS 6 could end up getting populated by icons from other apps soon enough. Imagine a dedicated Instapaper or Pocket button in the share sheet in Safari or a ‘process in Camera+’ button in your Photo Roll. This would do a lot to allay the criticism towards iOS for not allowing as much inter-app communication as other platforms like Android, Windows Phone or the web.