Ole Begemann has written an blog on Remote View Controllers in iOS 6, which shows Apple has adopted XPC in the sharing service of iOS 6.
As the XPC in iOS is still a private feature, we still have no idea about what will come together with the next major release. At he end of the blog, Ole put some outlooks regarding on XPC in iOS.
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.app we 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 UISharingRemoteHost and UISharingRemoteService.
Apple’s existing UIActivityViewController would then maintain a list of registered sharing services and present these options to the user.
I hope we will see something like this next year.
With the 5-year evolution, iOS has been so powerful than ever before, unfortunately, it still doesn’t support inter-app communication. I think most developer would be very happy to see this being available in iOS.
As my consideration, I agree that the implementation described above is feasible, however, I doubt whether Apple will do this or not.
- Technically, XPC is introduced to OS X to help developers break a large App into several building blocks based on their functions. In OS X, the XPC services are privately bundled in their host App. Which means those services are not system-wide (A system-wide service module is something like Microsoft’s COM+), and there is still no way to invoke these services across different Apps.
Although the XPC services are clearly different to the services on OS X, I believe that Apple will make a few XPC services be able to be invoked by other Apps (probably by wrapping those services into a common framework), but they would not allow any 3rd-party provider to create their own system-wide XPC services. Because it will be very difficult to handle the consistency of the services, especially on a mobile device. What if a service is not upgraded to the latest version? What if there are multiple dependency to different versions of a certain service? It will bring mess as well as benefit.
- As to the business strategy, Apple is always choosing the partner with great care. Those services which has integrated into the iOS not only benefit the users but also the service provider and of course Apple as well. So, what will make Apple allow any 3rd-party provider to provide system-wide services? I’ve no idea yet.
Anyway, let’s see what we will have in iOS 7.