iOS 9: Siri Extensions

Last year I speculated about a third party Touch ID implementation by Apple to come in iOS 8. While my proposed implementation was arguably terrible, Apple did in fact release a very simple API that allows develoeprs to take advantage of Touch ID.

Now that iOS 9 is upon us I’d like to speculate about another possible feature that we will see. With iOS 8 Apple introduced a robust extension system that grants third party developers the ability to write tight integrations within iOS. Specifically: Today, Share, Photo Editing, Action, Keyboards, and Document Provider extensions. I wrote about the first five in iOS 8 by Tutorials.

Ever since Apple introduced Siri to the world with iOS 5 and the iPhone 4S, people have been talking about what Siri would be like if she* could interact with third party applications. These conversations typically end with the conclusion that it would be too complicated for Siri to decide which app to use when handeling a specific request. With the existing extension framework I believe that Apple can greatly limit this complication.

Let’s take a look at what a Siri Extension could be… By default App Extensions in iOS 8 are disabled, this reduces complications for the user. When they try to share a photo they aren’t bombarded with an option for every app installed on their device that can share a photo. The user gets to pick and choose what appears in the share sheet and which order. Siri Extensions would be disabled by default as well. This immediately reduces confusion for Siri as she may not need to present a likely dreadful list of “Which app should I use?”.

Siri Extensions can be enabled from the Siri help screen, much like Today Extensions are enabled from within Notification Center.

As a developer of a Siri Extension the process is very similar to creating any extension. A new target is created and your extension will run as its own process independent of your app. Much like an Action or Share extension you configure a predicate within your target’s Info.plist under the NSExtensionAttributes key. This tells the Siri app when it should invoke your extension to handle a request. Can there still be conflicts? Yes, of course. A user can potentially enable conflicting extensions, at this point Siri would need to confirm with the user which extension should be used, just like when she cannot determine which Contact you meant in your request. But I suspect savvy users would eventually narrow in on which extensions they typically use and enable only those.

But why stop there? Spotlight is another system feature that is ripe for extensibility. People have cracked this on OS X with a plugin system. I believe that Apple will start offering official support for Spotlight extensions using their existing framework. How this could work in iOS I am a little less certain, but I do think that it is possible.

I’d love to hear your thoughts about these two extensions and other potential ones that we may see at WWDC 2015!

* Siri is technically gender agnostic, but the default voice in the U.S. sounds feminine so I typically refer to Siri as a woman.