iOS8 App Extensions In-Depth Review: Here’s What You Need to Know

This is the first in a series of posts about new iOS 8 features that apps can take advantage of. While there has been a lot of talk about some of these, our goal is to take an in-depth look at some of the lesser-known features with a big impact that iOS 8 brings to the table.

One of the most substantial additions to iOS with the release of iOS 8 is App Extensions. Extensions’ goal is to expand an app’s functionality and utility outside of the app itself. This marks the first time Apple has allowed third-party apps to integrate with one another and opens up a great deal of potential.

What’s an App Extension?

The easiest way to understand App Extensions is to think of it as unbundling functionality from within an app and allowing that functionality to be accessed elsewhere in the operating system, even when that app isn’t open.

However, Apple isn’t allowing extensions to be installed independent of applications, meaning extensions will always be attached to an application. Still, an extension always runs separately from the app its attached to. And since extensions have to run independent of the app, they must be created so that the extension doesn’t rely on the app being open, and vice versa. The two are even required to communicate only through system API’s rather than directly.

So while extensions are usually described as a way for apps to talk to each other, this description isn’t entirely accurate. In reality, two third-party apps still don’t directly talk to each other. When an app calls up an extension, it doesn’t speak to the other app. Instead, it launches the extension via Apple’s system frameworks and then speaks directly to the extension to access its functionality. The two apps are still entirely separate.

How does it work?

Extensions can only directly communicate with an app that is accessing them. For example, if I have a translation app with a translation extension, and I am running a PDF reader app in in order to translate a document, the translation extension can’t rely upon the translation app to do the heavy lifting. The extension could communicate with the main translation app using a custom URL scheme and shared resources, but architecting the extension to work this way would require some clever planning.

What can’t they do?

Extensions don’t have access to all of the API’s that traditional apps can use. For example, extensions can’t access the new HealthKit and EventKit frameworks. Additionally, access to the hardware (camera and mic) and AirDrop is extremely limited. Finally, extensions cannot perform long-running tasks in the background. The lifecycle of an extension should be relatively short, and iOS will quickly free up memory an extension is using after is has run.

For most extensions, a user must take action to enable it. This action is dependent upon the extension type. We’ll go over the different ways of enabling each extension type below

Types of extensions

There are seven types of extensions in iOS8:

  1. Sharing
  2. Photo Editing
  3. Storage Provider
  4. Document Picker
  5. Today
  6. Custom Keyboard
  7. Custom Action

In this post we’ll cover the SharingTodayCustom Keyboard and Custom Action extensions (the other extension types will be covered in future posts).

Sharing Extensions

What are they?

Sharing extensions are intended for posting to a social website or sharing content with others. Previously, sharing on iOS was only allowed for Apple apps and Apple’s partners (Facebook, Twitter, Flickr and Vimeo). With the introduction of sharing extensions, now any social app can create extensions to enable sharing within other apps, opening up iOS for much deeper integration with social platforms.

How do they work?

If you’re thinking about creating a sharing extension, its primary purpose should be allowing users to post content. If this doesn’t apply to your app, then another extension type is probably better for what you’re trying to do.

Sharing options are controlled by the user on a “share sheet.” A user must swipe to the right and select “More” to add an extension to their share sheet.

iOS8 Share Sheet

The share sheet with sharing options in the second row of icons, found when tapping the share icon in Safari.

iOS 8 provides a default share design that will work for many share extensions. This template offers some default text input, image preview and picker fields. You can also can create a custom share design to style it closer to your app’s branding or add additional field types. Once you have decided whether a native or custom sharing design is for you, it is important to define limitations on what can be typed in or selected for each input field. This will ensure your extension functions properly in all use cases.

Share Extension Templates iOS8

LinkedIn uses a default share extension template, while Tumblr opted for a completely custom one.

What can I do with them?

When building a share extension, it is important to define what content the extension will appear for. For example, a PDF reader app may specify that its extension will only appear for PDF documents. Specifying the data type and the minimum and maximum number of content items will ensure your extension shows up at only the right times (such as appearing for only 1 to 3 PDF’s being selected). Data types can be almost anything, including multimedia, URL’s or content scraped from a webpage.

One edge case is that if an app has multiple sharing extensions, they cannot have the same name in the share sheet. So if you have a media sharing app and you have different extensions for posting media to your personal feed and posting media to your public feed, you must give each extension a unique name.

Today Extensions

What are they?

Today extensions are intended for quick updates or quick tasks in the “Today” view of the notification center. These extensions are commonly referred to as “widgets.” Previously, the Today view could only show your calendar, weather forecasts and stocks. Now iOS 8 allows developers to create extensions that not only display information, but that are also interactive within the widget. This capability is incredibly powerful since it allows extensions to integrate right into iOS.

How do they work?

For users, Apple has made it easy to control all of their widgets in the Today view. When a new widget is available, you are notified by subtle text. You can then view all available widgets and easily enable, disable or reorder them.

While widget content cannot be controlled in the widget’s containing app nor edited in the Today view, it’s possible to get around this by adding customization controls in the containing app.

iOS8 App Extension Widgets

The Yahoo News Digest app, left, has a widget that displays the top news story. The LifeSum calorie tracking app, right, has a widget that allows for quick calorie referencing and input.

What can I do with them?

Apple has emphasized that widgets should not have multi-step tasks, but rather enable quick, simple tasks. That’s why widgets can’t make use of keyboards, which self-enforces this rule to an extent. A widget should also have a fixed width and should be compact enough that the user doesn’t have to swipe to see all of its content. If a widget is meant to only display under certain circumstances, your code must specify when it should appear. Widgets also appear in the Today view on the lock screen, so developers will have to be careful in controlling what content gets shown when a user is not “logged in” to their phone, especially if the widget contains potentially sensitive information.

Finally, one important thing to note about widgets is that stale data should never be presented to the user. Fetching data in the background is imperative to a consistent crisp user experience. Without it you run the risk of being rejected by Apple.

Custom Keyboards

What are they?

One of the most exciting features of iOS 8 are custom keyboard extensions. They are exactly what they sound like: custom keyboards for use in all your apps! In the past, you’ve only been able to use alternative keyboards within specific apps, but now extensions enable you to use custom keyboards throughout iOS8. However, these extensions are solely for system use and should not be specialized on a per-app basis. With the introduction of custom system-wide keyboards, iOS 8 becomes much more flexible for users.

iOS8 custom keyboard widgets

Here are three of the most popular custom Keyboards. SwiftKey, left, features typing by gestures with intelligent autocorrection. Riffsy, center, features a collection of categorized GIF’s. Scribbleboard, right, allows users to draw pictures for sharing.

How do they work?

Custom keyboards are installed within an app just like all other extension types. In order to activate a custom keyboard, the app must first be launched, then you will need to go to the settings app under General > Keyboard > Keyboards and select “Add New Keyboard…”. Once the keyboard has been added there, you can access it by tapping on the globe icon in the standard keyboard. This button lets you toggle between all the keyboards you have installed.

When it comes to building custom keyboards, there are very few implementation rules. The only steadfast rule is that a keyboard must contain the ability to switch to other keyboards. Additionally, custom keyboards can never access general keyboard settings, meaning they require their own settings.

Another incredibly important aspect of keyboards is building trust with users. Users can grant custom keyboards access to their Internet connection, but if they do, they have to trust that the keyboard is not a keylogger and that it won’t do anything that could be viewed as malicious.

SwiftKey received an enormous amount of backlash for how it was using location and contact data, so being transparent with your users up front is important. This user sensitivity is a big reason why custom keyboards don’t have default access to the Internet or user data.

There are also a number of features Apple suggests custom keyboards have, even though they aren’t required:

  • Appropriate layout and features based on keyboard type trait
  • Autocorrection and suggestion
  • Automatic capitalization
  • Automatic period upon double space
  • Caps lock support
  • Keycap artwork
  • Multistage input for ideographic languages

When not to use them

If your app allows custom keyboards, you should still restrict their use for secure fields. By default in iOS, password fields force the use of the standard keyboard. Apps can specify this restriction on a per-field basis or even for the entire app. Apps that need security, like banking apps or medical apps aiming for HIPAA compliance, should not allow the use of custom keyboards.

Custom Actions

What are they?

Custom action extensions allow you to manipulate or view content from one app within another app. This is a huge step in allowing apps to work with one another in a powerful yet controlled fashion. Actions are accessed and controlled on action sheets, similar to how share sheets work. There are three types of custom actions:

  • Safari action with its own interface
  • Safari action with no interface
  • Custom action for other apps

How do they work?

The first type of custom action only appears in Safari and has some benefits over standard custom actions. The biggest benefit is the ability to use JavaScript to scrape a webpage for content and act upon that content in some way. Safari actions with no interface are similar but simply act on the page itself without presenting any options to the user.

custom actions app extension ios8

Wunderlist, left, features a Safari action with a custom interface for adding new items to your to-do list. Bing, right, features a Safari action with no interface that translates the screen content to a users native language.

Custom actions for other apps do not have the ability to scrape a webpage but do allow for any app that wants to integrate with an extension to do so. For all custom actions, parameters must be defined in the form of data types that control when the action will display.

 

1Password features both a Safari action and custom action for integration with other apps to allow for easy password input.

1Password features both a Safari action and custom action for integration with other apps to allow for easy password input.

 

What can I do with them?

For both custom actions and Safari actions, the UI should be simple, restrained and focused on facilitating a single task. From a design perspective, a new greyscale app icon called a “template image” for the action sheet needs to be created.

It is important to note that some custom actions may require apps to integrate custom code in order to support them. This means that extension creators must release this code to other apps. This type of extension is the most powerful, but it’s also the hardest to gain widespread use with, due to this limitation.

Conclusion

Hope you enjoyed this in-depth look at App Extensions. While there are some strict limitations on how extensions can be used, they open up a lot of potential for inter-app interactions and tools.

Stay tuned for part two of our in-depth review of iOS8, coming soon!

For more on iOS8, download our iOS8 whitepaper. 

Interested in applying to Applico? Check out our job openings here!


Filed under: Product Engineering | Topics: apple, iOS, IOS 8, ios developer, ios development

B2B Distribution Technology

Sign up for our weekly newsletter covering B2B technology innovation


Top Posts

  • B2B Chemical Marketplaces and Tech Startups: Landscape and State of the Industry

    Read more

  • Platform vs. Linear: Business Models 101

    Read more

  • Amazon Business – 2020 Report

    Read more

  • Platform Business Model – Definition | What is it? | Explanation

    Read more

  • The Value of Digital Transformation: How Investors Evaluate “Tech”

    Read more