iOS apps exist in sandboxes intended to keep them safe, and to keep your data private and secure. For a long time that meant they couldn't talk to the system or to each other. As much as attacks were locked out, workflows were locked in. And so, as users, we had to devise a lot of convoluted workarounds. Extensibility in iOS 8 changes all that.
Extensibility brings widgets to Notification Center, custom sharing and action options to Share Sheets, custom filters and effects to Photos, custom keyboards system-wide, and ubiquitous file access via iCloud Drive or third-party document providers like Dropbox, OneDrive, or Google Drive. In other words, it phenomenally expands the capabilities of iOS, while at the same time maintaining the security and privacy of the sandbox.
With Extensibility, instead of having to devise workarounds, we'll be able to get on with our workflows.
Roughly two years ago Apple ported their cross-communication protocol, XPC, from the Mac to iOS. They also separated the original Springboard (the iOS windowing manager) into a new Springboard focused on foreground tasks, and a new service called Backboardd focused on background tasks. To that they added a daemon to run the extension system, to enable a host app — the app hosting the extension — to request interface and functionality from a container app — the app that containing that interface and functionality — with iOS handling all transactions in between.
This way the app sandboxes are maintained, but we can punch very specific, very temporary holes in them to get specific things done like bidding on eBay from the Lock screen, posting to Pinterest from the Share Sheet, using a Bing action to translate a website in-place, applying a VSCO Cam filter inside Photos, pulling up a Swype keyboard in Messages, or opening files from iCloud Drive and saving them back to Dropbox.
So now, instead of having to devise workarounds, we'll be able to get on with our workflows.
Interactive notifications — sometimes called actionable notifications — are just one of several forms of push interface in iOS 8 — of functionality that you once had to go chasing around the phone or tablet to find but that's now brought right to where you are.
For example, in previous versions of iOS, when a message came in, an invitation was sent your way, news was shared with you, etc. you couldn't do anything about it, not without leaving your current activity first.
With very few exceptions, like the snooze button on the alarm, you'd have to tap the notification, get sent to the corresponding app, reply to the message, accept the invitation, read the news, etc. and then be left to find your way back to original app you were using.
Now, with iOS 8, you can reply to a message right from the banner, accept an invitation right on the Lock screen, or favorite a piece of news directly in Notification Center. Whether you're playing a game, watching a movie, or editing a spreadsheet, interruption is minimized and app switching is potentially eliminated altogether.
The level of interactivity that a notification can provide depends on its alert style. Two actions are the maximum that can be shown in the limited space of the Lock screen, Notification Center screen, and banners. Three or four actions are can be shown on modal popup alerts, however, where interface space is more plentiful.
For example, on the Lock screen, in Notification Center, or as part of a banner, you might see "Accept" and "Decline" as actions available when an invitation comes your way. On a popup alert, however, you might see "Accept", "Maybe", "Decline", and "Block".
On the Lock screen and within Notification Center, you swipe from right to left to reveal actions. Destructive actions, like trashing an email, are color-coded red. Relatively neutral actions, like dismissing an alert or declining an invitation, are color-coded gray or blue depending on whether they're on the left or right side.
So, if you get a Message notification and your iPhone is locked, you can swipe on the notification, tap reply, and instantly be given a text entry field and keyboard, as well as a microphone button if you prefer to talk rather than type. Same if you see a Message notification in Notification Center.
For banners, you pull down to reveal actions as buttons. For popups, the actions are immediately visible — the buttons are right there.
For example, if you're on the Home screen or in another app and a Message notification banner comes up, simply pull down and you get the same text entry field, keyboard, and microphone option. Even if you're in the Messages app, replying to someone else, you can use the interactive notification system to reply to other people without leaving the conversation with which you're currently engaged.
There's still a limit to how much you can do in a small, notification-sized interface, of course. For more complicated or demanding actions, like viewing a shared document, you'll still get sent off to the appropriate app. However, since one of the primary use-cases for mobile is triage, for most things, most of the time, your days of constant app switching will be over.
Interactive notifications exist within containers. Think of them as mini apps all their own. This helps make them more reliable. For example, you can tap the Like button on a Facebook notification even if the main Facebook just got jettisoned by the system for hogging too much memory. The latter has no effect on the former.
This also helps make interactive notifications more secure. Because iOS handles all the presentation, the app you're in has no way of knowing what the notification says or what data it contains. Answer an iMessage while still in Facebook and Facebook is completely oblivious to what you're doing and what you're typing. Your notifications are completely private and safe.
For Lock screen notifications, developers can also choose whether to require a passcode for any action. For relatively neutral actions, developers can choose not to require a passcode. For anything destructive or anything that could compromise your privacy, they can choose to force passcode entry.
In the latter case, the passcode doesn't unlock the iPhone or iPad, it merely enables the interactive notification to launch. When you're done, you're returned to the Lock screen.
If you're nervous about exposing interactive notifications on the Lock screen, they can still be disabled on an app-by-app basis from within the Notification Center section of Settings, and Notification Center can be removed from the Lock screen in the Touch ID & Passcode section of Settings.
In addition to interactive notifications, there are few other new notification features in iOS 8. First, the payload size of push notifications has been increased from 256 bytes to 2 kilobytes. That should help developers make better, more robust notifications.
Because iOS 8 separates the concepts of user and remote notifications, while we still have to opt-in to receiving user notifications, we are now automatically opted-in to receiving remote notifications, including silent notifications (the kind that trigger background content refreshes). We can still choose to go to Settings and turn this off on an app-by-app basis, of course, but it means apps will act they way we expect them to act by default.
iOS 8 also adds something else new — location notifications. Technically possible in previous versions, they were a bit of a hack. Now, the functionality has been streamlined and allows for notification when someone enters or exits a region, either for the very first time, or every time.
That OS X Mavericks got actionable notifications last year, and iOS only this, shows how much work it took to make them a reality. Still, there's a ways to go. For example, so far only Messages allows for quick-reply within a notification, not mail or social networks, which shows there's still a ways to go. Overall, however, it's a well-architected system that provides tremendously convenient new functionality.
Today view widgets
The idea of "widgets" date back to the early days of graphical user interface (GUI) computing. The Xerox Star, Apple's Lisa and Macintosh, Microsoft's Windows, and others, all used the idea of the desktop as their metaphor. While that included things like files and folders, notebooks and ledgers, it also included tools like calculators and calendars. The pixels may have been chunky, the colors next to nonexistent, and the internet still just a dream, but it was a beginning.
With the rise of ubiquitous online connectivity, widgets took on a new roll: dedicated, glanceable information containers. Apple introduced their vision of web-based widgets in OS X Tiger with Dashboard.
The iOS home screen was never meant to be a destination but rather a transport. Not to stop and stare at, but to quickly find and get into apps.
The original iPhone was supposed to include a version of OS X-style Dashboard widgets, namely Weather and Stocks. They wouldn't have looked or acted any differently than any other full-screen iPhone app, but they would have been built like Dashboard widgets, using Apple's web technologies instead of native Objective-C. Since the presentation was to be no different, and the limits of WebKit at the time meant performance wasn't as good as native apps, they were ultimately rewritten in Objective-C anyway.
Other platforms, including Nokia (pre-Windows Phone) and Android went ahead with widgets. What's more, they distinguished them from full-screen apps by making them smaller and letting them live on the home screen, amid the app icons. Power users loved them, but few mainstream customers embrace them.
For Apple, the iOS home screen was never meant to be a destination but rather a transport. It was never meant for anyone to stop and stare at, but to quickly find and get into apps. When the App Store made apps more abundant, Apple added Spotlight as an ancillary way to help do just that.
Notification Center changed things. It could be pulled down from anywhere, including the home screen (and eventually the lock screen), and more importantly, from inside any app. Instead of having to leave what you were doing to go find information, you could pull that information to wherever you were, whenever you wanted, and then go right back to what you were doing with very little cognitive load. It wasn't perfect, but it was better.
iOS 7 split notifications and widgets apart, putting widgets in their own Today view, moving Weather to the Today Summary, and adding support for Calendar, Reminders, predictive location, and the Tomorrow Summary. Yet they were still limited to built-in apps and services.
iOS 8 and Extensibility take it to another level, allowing App Store apps to offer up their own Today view widgets — helpful information status indicators, simple, interactive utilities, and ways to launch into the full app when and if needed — easily accessible from anywhere on the iPhone or iPad, informational and interactive.
PCalc, for example, can make a full-fledged calculator available to you as a widget from anywhere and everywhere you can pull down Notification Center.
If you've used Notification Center's Today view in iOS 7, you already know how custom widgets work in iOS 8. You just pull down Notification Center from the lock screen (if enabled), Home screen, or from within any app, and if you're not already in the Today view, you simply tap the Today tab at the top.
Built-in widgets provided by Apple include Today Summary, Traffic Conditions, Calendar, Reminders, Stocks, and Tomorrow Summary. However, at the bottom there's a now an Edit button and a notification area that tells you how many new third-party widgets are available to install. Tap the Edit button and you can enable or disable any of the built-in widgets and reorder them any way you like. Tap the New Widget notification and you can add any new, custom widget that has become available.
New widgets become available when you install apps from the App Store. If the app includes a widget, the widget notification area will tell you about it. Tap the widget you want added, and it's added. Once added, you can order App Store widgets just like the built-in widgets, and remove them if and when you decide you no longer want or need them.
For example, if you download PGA TOUR, you can enable a widget that shows you the current round of a tournament in progress, the leaderboard, and any favorite players that you designate.
Or, if you download a social networking app, it could include a couple of status entries, and maybe a Show More option to see even more entries. A package tracker app's widget could keep you up-to-date on all your deliveries. Breaking news, latest weather — all of those, and more, could provide glance-able widgets right in the Notification Center Today view.
Like the new notification system, the new widget system in iOS 8 is interactive. So, not only can the widgets provide you with snippets of information, they can also allow you to perform minor tasks as well.
For example, an auction widget can show you the items you've last bid on and whether or not you're currently being outbid, but also allow you to up your bid right there in the widget and retake the lead. A social widget can let you glimpse a few entries in your timeline and Like or Repost right from the widget.
What widgets can't do is invoke the keyboard, which means widgets can't take text input the way a Messages quick reply notification can. Complex actions are also beyond the scope of widgets. So, for example, you can't change which stocks are shown in the Stock widget. They simply reflect the stocks shown in the Stocks app. In order to change the widget, you have to change the app.
To maintain security and privacy, Notification Center owns the widget and it communicates only with Notification Center, not with its container app at all. That not only makes it secure, and prevents data from moving between apps, but makes it robust. A calculator app doesn't have to be running for its widget to work in Notification Center, and if it is running, the system can still jettison it to free up resources without affecting the widget.
When a widget does need information from its container app, it goes through iOS, and through privately shared data resources.
It's taken a long time for custom widgets to arrive on iOS, but there's every indication Apple has done them in the right way and put them in the right place.
With sharing extensions, you no longer have to wait and hope for Apple to make a deal with your favorite social networks just so you could have them integrated into iOS. You no longer have to copy a URL, switch to the social or IM app you wanted to share it from, paste it in, and then go from there. You no longer have to take a photo or video, switch to the social network app you wanted to upload your content with, pull up the camera roll, search for and pick the photos or video you wanted to upload, and then go from there.
Now, any app you download from the App Store can hook into the Share Sheets and give you the option to share or upload your content with other members and to the service. It's basically like a plugin that lets you share comments, photos, videos, audio, links, and more right from Safari or Photos or any appropriate apps that hooks into the Share Sheet system.
For example, if you took some great photos or videos at a party and you want to quickly make a visual story out of them, you can just tap the Share button, tap the Storehouse extension, and share directly from Photos.
If you're in Safari and you see a great new iPhone case on iMore. You can simply tap the Share button, scroll across to Pinterest, and tap the icon to pin it. The sharing extension gets full access to Safari, so you can swipe through all the available images of that iPhone case and pick just exactly the one you want to pin, to exactly the board you want to pin it.
You get the sharing extensions when you download the apps, and you also get the ability to customize your sharing options. Scroll all the way to the right on a Share Sheet and you'll see a special "More" icon. Tap it and you're taken to the Activities panel where you can toggle on or off all the sharing options (with the exception of Messages and Mail), and move all of them around into any order you like.
That means, if Storehouse is something you use a lot, you can move it to one of the first few slots. If Facebook is something you use never, you can switch it off and not worry about it taking up space and slowing you down.
Just like the rest of Extensibility, sharing extensions balance convenience with security. The app you're sharing from is the host and the service you're sharing to is the container. For example, if you're in Safari or Photos, that's the host application. If you're sharing to Storehouse or Pinterest, that's the container.
When a share extension is invoked it communicates securely through iOS to the host app for things like posting permission or content. The developer needs to make sure all of that is available in a container that both the app and the extension have access to, but is otherwise secure in and of itself. iOS will then handle things like background video uploading, leaving the extension free to handle the user interaction.
Like with widgets and interactive notifications, instead of going somewhere else and hunting around for what you want to do, share extensions brings the functionality to you. It's more efficient, it's more convenient, and it's just plain better.
Share Sheets in iOS have another name behind the scenes — activity view controllers. That's fitting because, in addition to providing sharing options, they also provide for other "activities", like action options. Traditionally, that's been system options such as copy, save, print, etc. However, just like custom sharing options have now been made available in iOS 8, so too have custom action options.
And like custom sharing actions, this means you're no longer bound to options supported by Apple and Apple alone. Now any app can add an action extension that increases the utility and diversity of other apps and of iOS itself.
Now any app can add an action extension that increases the utility and diversity of other apps and iOS itself.
You're also no longer forced to, for example, leave Safari, go to 1Password, use the in-app browser, or copy the password to the clipboard and find our way back to Safari just to log into a website. With action extensions, everything just works, right where you need it, right when you need it.
So, for example, instead of Apple and Microsoft making a deal to get Bing translate built into Safari, Microsoft can make an action extension to the Bing app and, thanks to Extensibility, it'll be available just like the built in options.
Likewise, 1Password can make an extension to unlock and fill your passwords on websites and, as long as there's a Share button, in apps as well.
Getting to an action extension is simple. If you're in Safari and you want to login to iMore, just tap the Share button. From there, scroll horizontally and tap More, then flip the 1Password extension to on. (It'll be there as long as you've downloaded the 1Password app from the App Store first.)
Go back to the Share sheet, tap the shiny new 1Password action option, and 1Password's familiar interface will slide up and ask for your master password. Fill that in and 1Password will fill your iMore credentials in.
To help keep things manageable, action extensions tell iOS their context — whether they work on text or images, form fields or something else — and iOS will only present that work in that context. So, if you select text, you won't get image action options.
You can also arrange action extensions in any order you like. Scroll to the end of the action options on the Share Sheet, tap the More button, and slide any item in the list up or down. Unlike custom share options, however, you can't toggle any of the default system actions off, but you can toggle the custom ones
Still, that means if you use the 1Password action extension to autofill your passwords all the time, you can put it into one of the first few slots. Then it's always immediately available, no scrolling required, whenever you tap the Share button.
Action extensions also maintain the security and privacy of iOS through a host and container relationship. For action extensions, the app you're sharing from is the host and the service you're sharing to is the container. For example, if you're in Safari, that the host application. If you're using an action like filling a password from 1Password or translating text from Bing, those would be the containers. Beyond security, that provides reliability — neither 1Password nor Bing in those examples would have to be running in advance, or persisting in the background, for the action extensions to be invoked.
When an action extension is called, it communicates securely through iOS to its host app for things like the authentication and password information or the translation libraries. That's then sent back to the container app so the action can complete.
What all this means is simple — iPhone and iPad owners will get to spend less time jumping between apps and more time getting things done within the apps they're already using. And that's a huge win.
With iOS 8, AirPlay no longer requires your iPhone or iPad to be on the same Wi-Fi network as the Apple TV you want to beam content to.
Now, you can use point-to-point Wi-Fi for peer-to-peer AirPlay, which can come in handy for meetings at other offices and visits to friends alike.
iCloud Drive and Document Picker
One of the design goals of the original iPhone and iPhone OS was to liberate mainstream customers from the burden of the file system — to prevent documents being strewn over a desktop or buried in a hierarchy. Sure, some people loved file systems and others learned to cope with them, but to many more they are simply confusing, inaccessible, and inhuman.
For the Photos app, Apple provided a simple repository which included the Camera Roll and an ImagePicker so that other apps could pull images out and, eventually, save them back. It was a duplicative procedure, however, and it only worked with photos and videos in that repository.
File management on iOS was inefficient to the point of insanity. Now it's fixed.
For other types of files, Apple provided next to nothing. You could access and edit them freely from within the app that created them, but they were "private" — invisible to any other app. The best you could do, if you needed a file to escape its app jail, was to go to the original app and, if implemented, use the "Open In..." functionality to export a copy to another app. At that point, however, they were treated as separate files and changes made in one app weren't reflected in the other.
It was inefficient to the point of insanity. Now it's fixed.
iCloud Drive and its associated Document Picker are new features of iOS 8 that replace the old Documents in the Cloud system with a new one that allows the app you're using to open files created in a different app, import them, move them, or export them right back out again, all without creating any unnecessary steps, complicated workflows, or duplicate copies.
Everything is still backed up and synced to all your devices, but now everything is also available to all your apps. For example, Scanner Pro.
To maintain security and privacy, all files created by an app are kept safe and secure inside that app's container. However, apps can now make those containers "public" — to make them visible to other apps.
So, with iOS 8, when you tap to open a file, and choose iCloud Drive as your source, instead of just the files associated with the app you're in, you'll see folders representing all the other apps installed on your iPhone or iPad that have their containers set to public. Tap on one of the folders and you see the files contained in that app.
So, as long as you remember which app created the file, you'll have an easy way to find it. If you can't, there's a handy search box. You can also change the view from grid to list, and in list view you can quickly sort by date, name, and even tags.
Once you find your file, tap on it, and you punch a hole in the sandbox just big enough to for the file to fit through.
The file will remain accessible to the current app and to you, right alongside the internal files. iOS keeps its preview thumbnail and name — along with an optional annotation to show which app it comes from — readily available. In other words, your inter-app permission is persistent.
So, of example, if you're in Pages and tap to open a file, then tap iCloud Drive, and you see the Editorial App folder, you can tap on that, and then tap on your Bucket List file. Pages will then open a version of the file and let you work on it. Changes you make will be saved back to the version in Editorial. And Bucket List - Editorial will, from then on, be listed alongside all your local Pages documents.
Same with an image you started in Brushes but want to continue in Prototype, if both apps choose to support it. Same with a chess game you want to email to a friend so they can continue it for you in their version of the same chess app.
Instead of opening files, iCloud Drive can also be used to import them. For example, if you wanted to bring slides from one Keynote deck into another, the file with the additional slides could be imported instead of opened. Likewise if you wanted to import an image into a Pages document.
Documents can be exported to other apps if you don't want to keep a copy in the current app.
iCloud Drive and Document Picker are quantum leaps forward when it comes to file handling on iPhone and iPad. I could quibble about there being no iCloud Drive app on iOS, so i can't simply browse all my files, or that there doesn't yet seem to be a way to access Document Picker from within the Mail app so you can add arbitrary files, like there is the ImagePicker for photos. As a first step, however, both iCloud Drive and Document Picker are terrific.
Document provider extensions
Previously in iOS, there were two ways to work on files contained in online storage providers: Download you're provider's app, find your file, and use "Open in..." to push a copy out to the app you want to use, or hope your provider's service was supported by the developer who made the app you want to use.
Not every app supported every provider, however, and there was no clean way to round-trip file.
Document provider extensions fix this by hooking into the same Document Picker interface that Apple presents for iCloud Drive.
When you install an iOS 8 app that supports document provider extensions, the associated service will be added to the Document Picker options list. So, for example, you open a text editing app and then tap to create a new file or open an existing one, the Document Picker interface would come up and, if you had OneDrive for iOS 8 installed, you'd see OneDrive as an option there right alongside iCloud Drive. Same for Dropbox.
An enterprise could even disable iCloud Drive, if they didn't want employees using it on their work devices, and provide their own, corporate storage services right in the Document Picker instead. (Hello IBM partnership.)
Like with iCloud Drive, by default, no app can access the container of another app. Getting around that requires an explicit action like opening Document Picker and tapping an external document. Document Picker runs "out-of-process" for that reason — so it can see all apps in all public containers.
When you're in an app and call up the Document Picker, then choose a document provider extension, it's Document Picker and not the host app that calls up the interface. Likewise, it's the Document Picker system that performs actions like open on the files and moves them to the host app so you can work on them. All access is controlled by an isolation layer.
It looks like Apple has given document provider extensions as much access and functionality as their own iCloud Drive, and that's remarkable when you consider the long history of iOS. And like iCloud Drive, document provider extensions make for a quantum leap forward when it comes to file handling on iPhone and iPad. In fact, since there's no iCloud Drive app, but document providers already have apps, they arguably can serve some workflows even better by providing a centralized repository where all files can be browsed, accessed, and organized.
Hopefully in the future we'll see document picker functionality pushed out even further in iOS, for example into Mail or Calendar for attachment handling. That's the best thing about Extensibility — as much as it gives us now, with both Apple and developers involved, there's sure to be even more to come.
Touch ID is Apple's fingerprint identity sensor currently available on the iPhone 5s, iPhone 6, and iPhone 6 Plus. It's what lets you authenticate to unlock your phone and authorize iTunes purchases on your account. With iOS 8, it's also what allows developers to let you authenticate and authorize App Store apps as well. That way, everything from your password manager to banking service to private photo vault can be both secure and convenient.
When you put your finger on a Touch ID-equipped Home button, the metal ring around it detects the capacitance and wakes up the sensor. A high resolution photo of your fingerprint is then taken, converted into a mathematical representation, and sent over a hard-wired connection to the secure enclave of the Apple A7 or Apple A8 system-on-a-chip. If the data doesn't match, a "no" token is released and you need to try again, or enter a passcode or password. If the data does match, a "yes" token is released, your iPhone unlock is authorized, or your iTunes or App Store purchase gets authorized.
Previously, however, there was no way to secure those tokens for developers. Enter the Keychain.
KeyChain is Apple's secure database for passwords. In iOS 8, it's KeyChain that receives the "yes" or "no" token from the secure enclave following a successful Touch ID authentication, and KeyChain that provides or withholds credentials to apps accordingly.
That means Touch ID — and your fingerprint data — can stay safely locked within the secure enclave, but it can still be used in place of a username/password combo to more conveniently fill in passwords and otherwise authorize any app on the App Store.
Also, thankfully, Touch ID can also now be used as a second factor for increased security in a third party app. (i.e. Touch ID instead of passcode vs. Touch ID in addition to passcode.)
In addition to apps, Touch ID can also be integrated into action extensions. So, for example, 1Password could use Touch ID to authenticate you before showing you your passwords inside its own app. A 1Password action extension, however, could be called from within Safari or any app with a Share button and allow Touch ID to authenticate you so the extension can auto-fill your password fields.
The Touch ID interface is owned and controlled by iOS, not by the App Store app that calls it. Only upon successful determination of authentication status, opt-out to password, or canceling out altogether can an app regain control.
Also, for security reasons, Apple and iCloud do not back up Touch ID protected items, and don't sync them between devices. In other words, your data is never put up on the internet or onto anyone's servers, including Apple's. Not ever.
Developers also never gain access to your fingerprint data in their apps. It all stays tucked away safely in the secure enclave.
Entering passwords on mobile devices, especially the kind of unique, pseudorandom passwords we're supposed to be using, is so onerous many of us simply stop using them at all. Touch ID helps by making a biometric authentication system available that's both easier and faster to use. And now it can help us on the web and inside apps as well.
Talk about your killer features.