What are App Extensions?
iOS 8 is shaping up to be perhaps the biggest update in iOS history, in terms of new APIs and frameworks. At 2359 Media, we have been researching and experimenting on the new features and capabilities in iOS 8. Among them, app extensions are the ones that we feel most excited about. They enables a lot of new possibilities that cannot be done before in iOS. That’s why we choose app extensions to explore ideas that are only possible in iOS 8.
This article is part 1 of a series of articles on our journey of experimenting app extensions. In this article we’ll introduce the concept of app extensions, emphasizing on why they are important in iOS ecosystem, for both users and developers. In the rest of the articles in the series, we’ll first talk about the creative process of exploring ideas around the new features in iOS 8, then we’ll present HungerSnap, which is a simple utility app that can let user enjoy the meal before they submit reviews to Foursquare. We’ll explain the idea behind HungerSnap as well as the challenges we faced when developing this app.
App extension is a significant update for both normal users and developers. An app extension lets developers extend custom functionality and content beyond their apps and make it available to users while they’re using other apps or the system.
An iOS app is sandboxed to protect unintentional access of its content from malicious software. App sandboxing is a great way to keep iOS apps in a safe environment. An iOS app basically lives in its own world. However, it also creates the difficulties for apps to collaborate. For example, a user might want to take a photo with the Camera app (because it can be opened quickly from lock screen), and share the photo with Instagram. Because of sandboxing, The Instagram app cannot directly access the photo image inside the Camera Roll, but it needs to copy the image from the Camera Roll to the Instagram app for editing and sharing.
Therefore, one of the long outstanding feature requests for iOS is the ability for 3rd party apps to communicate with each other. With the introduction of app extensions in iOS 8, developers finally are able to extend functionality and content of their own apps to other apps. Developers need to update their existing app by adding app extensions, which are small binaries that must be bundled with normal apps. But they’re intended to be invoked from the outside of the main apps, for example Notification Center, the Photos app, and actually any apps that use the standard activity sheet. Users can thus use the functionalities of one app without leaving current app or even system’s control, like Notification Center.
Even with app extensions, iOS still puts up barriers between applications, their extensions, and applications’ data in an effort to protect users and their data from themselves. For starters, applications still don’t really talk to one another directly. Extensions are small binaries that are usually launched independently of their containing app. The app that called for the extension (which are called the “host app”) talks with the extension directly once it has been launched, but the host app never communicates directly with the containing app. Even when a host app wants to use an extension, it sends a request via Apple’s system frameworks, which then launch the extension—apps don’t launch extensions directly.
Apple doesn’t give all the freedom to developers with app extensions. There are 6 pre-set “extension points” where developers can add part of their apps. As a result, there are totally 6 types of app extensions:
It lets users to post photos, videos, URLs and other files to a sharing website. They live in the system standard activity sheet. Share sheets aren’t new to iOS 8, but previously only the items chosen by the developer were listed as places to send content. In iOS 8, any app with a sharing extension becomes an option in every other app’s share sheet provided the app can accept the content.
As an example, photo sharing apps, like Instagram and Flickr, have share extensions, so users can share photos directly from the Photos app as well as any apps that support activity sheet. Read later apps, like Pocket and Instapaper, have share extensions to let users instantly save the URL to the service without leaving the current app. Team communication apps, like Slack, can also have a share extension that can be used to send photos, URLs and any other files to team members.
Similar to share extensions, action extensions also live in the standard activity sheet. But instead of sharing, they are used to manipulate or view content within the context of another app. For example, a Bing translate extension can be used to translate the website that the user is currently viewing.
Another great example is 1Password, a password manager app. It has an action extension that can analyze the webpage that the user currently is viewing, and load the credentials for this particular website. The extension also supports Touch ID for the authentication. 1Password is one of the examples that iOS 8 enables the possibility of truly effective tools that could never be done before.
Photo editing extensions
These extensions are for the Photos and Camera apps particularly. They extend their functionalities of editing photos or videos. That’s a great feature if you edit a lot of visual content on your iPhone or iPad; it means you have a wide range of tools at your disposal without having to work through multiple apps to get the effects that you want. Because all extensions are part of independent apps, however, it also means you have access to other features in the apps beyond filters and effects.
It’s also called notification widgets. It lives in Today view of Notification Center. They are used to get a quick update or perform a quick task. For example, a news app can have a widget to provide a new hotline. A reminder or todo app can have a widget to let users quickly enter a new task. A weather app can show the summary of today’s weather in Today view. For certain utility apps, like calculator apps, the whole app can live as a Today widget.
The usefulness of Today widgets can vary significantly depending on how extensive a developer has made them and whether the apps that you use frequently offer them. In short, they might provide value or they make tasks more efficient.
It replaces the iOS system keyboard with a custom keyboard for use in all apps. There are a number of keyboards available that range from variations on a traditional keyboard to swipe-entry style keyboards to full graphical keyboards where you “type” images rather than letters. Keyboards are download from the App Store like apps.
They will make cloud storage services, like Dropbox, Google Drive, etc., be integrated with iOS 8 in a seamless way. For instance, a productivity app can let users choose a document from a variety of cloud services, without integrating any SDKs from these cloud services.
One of the biggest frustrations about previous versions of iOS was that if you needed to use multiple apps to work on a file or piece of content, you had to go through multiple export and import operations to move the file from one app to another, often with a copy of it being saved by each app in the chain.
With storage provider extensions and the new iOS 8 document picker, this changes dramatically. An app that has a storage provider extension can make its sandboxed data store of content, documents, or files available to apps via an iOS 8 document picker, typically presented as an open or import dialog.
With app extensions, Apple has addressed one of the biggest complaints about the platform—allowing third-party apps to communicate with other apps. They also have done it in a way that doesn’t compromise its security model. With all the types of extensions, there are a lot of new possibilities can be explored. This is really a huge opportunity for iOS app developers. It is no exaggeration that app extension opens a whole new world of iOS apps.