How do I… in iOS 8?
If you are here, you are probably wondering whether it’s possible to get an AIR app to:
- appear in the iOS 8 Share Menu? If you are here for the iOS 8 Share Menu Tutorial, you can jump straight to it or download the source code here:
- appear in the Notification Center?
- edit content in another app?
- edit a photo or video within the Photos app?
- provide access to and manage a repository of files?
- replace the system keyboard and use a custom one?
- provide notification UI for Apple Watch?
iOS 8 enables all of the above through App Extensions. Apple’s definition of an App Extension goes like this: “… an app extension lets you extend custom functionality and content beyond your app and make it available to users while they’re using other apps or the system.”
iOS App Extensions are not ANEs
One distinction we need to make is between an iOS App Extension and an Adobe AIR Native Extension. It might be helpful to think of an iOS App Extension as a plugin instead. These are the main differences:
- An ANE, AIR Native Extension, is a generic library that can be distributed and used by any AIR application for a given platform. Its main part is written in native code and an it provides an ActionScript interface.
- An iOS App Extension is a plugin that lets you do only one task in a specific app on iOS. It is created for a given app and cannot be used in another app unless it’s edited and recompiled. It’s made entirely out of native code.
Can I use an iOS App Extension in AIR?
You can. In principle. In the next article we will have a look at a simple example:
How do I use an iOS App Extension in an AIR app?
You will need to create the app extension in Xcode and then have it end up in a specific place in your IPA package. For the specifics, have a look at Step 4 of our iOS 8 Share Menu tutorial.
In case you are wondering: no, it doesn’t make sense to package an app extension in an ANE and distribute it that way. The app extension is tightly coupled with the app it is created for. It also needs to be found in a specific place inside your app package, which is different from where the ANE files end up.
Is there a tutorial?
Thought you’d never ask: