Unlike Android updates, iOS updates usually gain a significant high adoption rate. And so it is for iOS 8.
iOS 8 is officially released on Sept. 17, 2014. Up to Oct 5, 2014, according to Apple’s distribution announcement, it shows 47% of iOS devices are running iOS 8, tied with iOS 7 (also 47%).
With this high adoption rate, the earlier the app takes advantage of the new features iOS 8 offers, the better app using experience can it convey to app users, especially for those new iPhone users (iPhone 6 and iPhone 6 Plus).
Table of Contents
- 1 iOS 8 Changes (as a Developer)
- 1.1 Iphone 6 and iPhone 6 Plus
- 1.2 New Capabilities
- 1.3 Notifications Related
- 1.4 New WebView (Webkit Framework)
- 1.5 Games Related
- 1.6 Other Changes in Frameworks
- 2 Run iOS 7 SDK App on iOS 8 Devices
- 3 Do Development Based on iOS 8 SDK
- 4 Test App
- 5 Do App Review
- 6 References
iOS 8 Changes (as a Developer)
Like iOS 6, the release of iOS 8 not only introduces a huge set of new APIs, but also brings two new iOS devices – iPhone 6 and iPhone 6 Plus – with two new screen sizes and resolutions.
Iphone 6 and iPhone 6 Plus
The iPhone 6 has 4.7″ and 750×1334 physical pixels (same 326dpi as iPhone 5s, 640×1136) while the iPhone 6 Plus includes a bigger 5.5″ with a Full HD 1080×1920 resolution (401 dpi).
As shown in the table below, iPhone 6 has the same Device Pixel Ratio (2x) as iPhone 5/5S and they also share the same PPI as well as Screen Ratio (1.80). iPhone 6 Plus with 401 ppi needs a higher value on device pixel ratio, whose real value should be around 2.60 (1080 / 414). However, Apple enlarges it as another higher-level scale factor: 3x, emulating a 3x device pixel ratio. In other words, if the device pixel ratio is 3x then the physical screen (at 414 points in width) should have a width of 1242 pixels which is larger than 1080 pixels in real device. For 1242 pixels, Apple calls it as Rendered Pixels.
|iPhone 5/5S||iPhone 6||iPhone 6 Plus|
|Screen Size (inch)||4||4.7||5.5|
|Physical Pixels||640 x 1136||750 × 1334||1080 × 1920|
|Pixels Per Inch (PPI)||326||326||401|
|Screen Coordinates (in Points)||320 x 578||375 x 667||414 x 736|
|Device Pixel Ratio||2x||2x||3x (fake value)|
|Rendered Pixels||640 x 1136||750 × 1334||1242 x 2208|
iPhone 6 Screens Demystified gives an excellent review of iPhone 6/6Plus screen sizes.
From development’s perspective, if we are doing UI for iPhone 6 Plus, we will need to prepare for a new set of image scales – 3x.
The new introduced set of APIs brings a lot of new capabilities.
iOS 8 lets you extend your app’s functionality and content throughout the system by supplying an app extension — code that enables custom functionality within the context of a user task. Use extensions to place the power of your app wherever your users need it most.
iOS supports app extensions for the following areas, which are known as extension points:
- Action: Perform a simple task with the selected content.
- Share: Share content with social websites or other entities.
- Photo editing: Edit a photo or video within the Photos app.
- Today: Enable a quick task or update in the Today view of Notification Center. Also called Widgets.
- Storage provider: Provide a document storage location that can be accessed by other apps.
- Custom keyboard: Provide a custom keyboard that the user can choose in place of the system keyboard for all apps on the device.
Touch ID Authentication
Your app can now use Touch ID to authenticate the user. Some apps may need to secure access to all of their content, while others might need to secure certain pieces of information or options. In either case, you can require the user to authenticate before proceeding. Use the Local Authentication Framework (LocalAuthentication.framework) to display an alert to the user with an application-specified reason for why the user is authenticating. When your app gets a reply, it can react based on whether the user was able to successfully authenticate.
PhotoKit & New Camera APIs
PhotoKit (Photos.framework) provides new APIs for creating applications that can access and directly edit photos and video assets managed by the Photo app without having to import them first. New Camera APIs (AVFoundation.framework) give full manual control over the camera’s settings. Your app can take direct control over the camera focus, white balance, and exposure settings.
Leverage the full power of iCloud and build apps with the new CloudKit framework (CloudKit.framework). Now you can easily and securely store and efficiently retrieve your app data like structured data in a database or assets right from iCloud. CloudKit also enables your users to anonymously sign in to your apps with their iCloud Apple IDs without sharing their personal information.
With CloudKit, you can focus on your client-side app development and let iCloud eliminate the need to write server-side application logic. CloudKit provides authentication, private and public databases, and structured and asset storage services — all for free with very high limits.
The document picker view controller (UIDocumentPickerViewController) grants users access to files outside your application’s sandbox. It is a simple mechanism for sharing documents between apps. It also enables more complex workflows, because users can edit a single document with multiple apps.
The document picker lets you access files from a number of document providers. For example, the iCloud document provider grants access to documents stored inside another app’s iCloud container. Third-party developers can provide additional document providers by using the Storage Provider extension.
HealthKit (HealthKit.framework) allows apps providing health and fitness services to access shared health-related information in one place. A user’s health information is stored in a centralized and secure location and the user decides which data should be shared with your app.
Your app can access any shared health-related information and can provide information about the user without you needing to implement support for specific fitness-tracking devices. Information can come from devices connected to an iOS device or manual entry by the user.
HomeKit (HomeKit.framework) is a new framework for communicating with and controlling connected devices in a user’s home. New devices for the home are offering more connectivity and a better user experience. HomeKit provides a standardized way to communicate with those devices.
Your app can use HomeKit to communicate with devices that users have in their homes. Using your app, users can discover devices in their home and configure them. They can also create actions to control those devices. The user can group actions together and trigger them using Siri. Once a configuration is created, users can invite other people to share access to it. For example, a user might temporarily offer access to a house guest.
Use the HomeKit Accessory Simulator to test the communication of your HomeKit app with a device.
Handoff is a feature in OS X and iOS that extends the user experience of continuity across devices. Handoff enables users to begin an activity on one device, then switch to another device and resume the same activity on the other device. For example, a user who is browsing a long article in Safari moves to an iOS device that’s signed in to the same Apple ID, and the same webpage automatically opens in Safari on iOS, with the same scroll position as on the original device. Handoff makes this experience as seamless as possible.
To participate in Handoff, an app adopts a small API in Foundation. Each ongoing activity in an app is represented by a user activity object that contains the data needed to resume an activity on another device. When the user chooses to resume that activity, the object is sent to the resuming device. Each user activity object has a delegate object that is invoked to refresh the activity state at opportune times, such as just before the user activity object is sent between devices.
If continuing an activity requires more data than is easily transferred by the user activity object, the resuming app has the option to open a stream to the originating app. Document-based apps automatically support activity continuation for users working with iCloud-based documents.
In iOS 8, the payload size of push notifications has been increased from 256 bytes to 2 kilobytes. This new limit is retroactive and works with all existing devices!
In iOS 8, users can interact with notifications and take actions such as reply to a message, confirm a contact request, or like a Facebook post, without switching apps.
The Notification Actions need to be registered first before using. All possible Actions are capsulated as Category. By using actions, you also need to specify category as well.
In iOS 8, app can create a location aware notification when someone enters or exits a region. And notifications can be sent only the first time a location is entered and exited, or every time.
For more info about Notifications in iOS 8, see changes to iOS Notifications.
New WebView (Webkit Framework)
In iOS 8, a new webView API (Webkit.framework) is introduced to provide equivalent performance to Safari. By using this new WebView API, Hybrid iOS apps can receive a notable performance increase.
This article describes a detailed benchmark improvement of the new webView API.
Technology improvements in iOS 8 make it easier than ever to implement your game’s graphics and audio features. Take advantage of high-level frameworks for ease-of-development, or use new low-level enhancements to harness the power of the GPU.
Controller Forwarding is a new feature that enables users to snap an iOS device into a game controller and be able to use the controller buttons, device’s touch screen and motion to control games running on iPads or Macs. Developers creating games for these platforms should take these new control options into account when developing apps that support controllers.
With extremely low-overhead access to the A7 and A8 GPU, Metal enables incredibly high performance for sophisticated graphics rendering and computational tasks. Metal eliminates many performance bottlenecks that are found in traditional graphics APIs. It’s specifically designed to exploit modern architectural considerations, such as multiprocessing and shared memory, to make it easy to parallelize the creation of GPU commands. Metal offers a streamlined API, a unified graphics and compute shading language, and Xcode-based tools.
SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your apps. It incorporates a physics engine, a particle generator, and easy ways to script the actions of 3D objects so you can describe your scene in terms of its content — geometry, materials, lights, and cameras — then animate it by describing changes to those objects. SceneKit’s 3D physics engine enlivens your app or game by simulating gravity, forces, rigid body collisions, and joints. It’s also completely integrated with SpriteKit, so you can include SpriteKit assets in 3D games.
The SpriteKit framework adds new features to make it easier to create high-performance, battery-efficient 2D games. With support for custom OpenGL ES shaders and lighting, integration with SceneKit, and advanced new physics effects and animations, you can add force fields, detect collisions, and generate new lighting effects in your games. Xcode 6 also incorporates new shader and scene editors that save you time as you create your game. Create a scene’s contents, specifying which nodes appear in the scene and characteristics of those nodes, including physics effects. The scene is then serialized to a file that your game can easily load.
Other Changes in Frameworks
For a complete list of changes in frameworks, see What’s New in iOS 8.
Run iOS 7 SDK App on iOS 8 Devices
During all previous iOS upgrading, Apple always does a very good job on the compatibility – running an app compiled based on lower version of iOS SDK on the new iOS platform. iOS 8 is also in the case, even the new iOS 8 brings two new device sizes.
The release of iPhone 5 brings the first-time change of screen size (from 3.5 inch to 4 inch). At that moment, apps designed for the smaller screen did not work perfectly well with the larger screen – handled by adding two black stripes on both the top and the bottom of the 4-inch screen.
Unlike iPhone 5 release, the bigger changes in screen size brought by iPhone 6 and iPhone 6 Plus release does not even need app developers’ attention. It just works well by using a desktop size scaler technology – the app scales up to the full screen on both iPhone 6 and iPhone 6 Plus.
In sum, from development standpoint, app does not need an imperative update to work well on the new devices.
Do Development Based on iOS 8 SDK
When switching the development environment from iOS 7 to iOS 8, the every first thing you need to consider is to support New Screen Sizes and Scales.
Support New Screen Sizes
As discussed above, iPhone 6 ships with 375 x 667 points screen coordinates and iPhone 6 Plus goes with 414 x 736 points screen coordinates, which are significantly different from the original 320 x 578 points screen coordinates by iPhone 5/5S. Developing app against iOS 8 does need to support the larger screen size of iPhone 6 and iPhone 6 Plus. By doing this, iOS 8 introduces Adaptive UI.
Enable Support to New Screen Sizes
In order to let the system know that the app supports the iPhone 6/6Plus screen sizes, you need to include a storyboard launch screen file in your app’s bundle. When running the app, the system will check if that file exists or not. If existed, the system runs the app explicitly in fullscreen mode. Otherwise, the app runs in a “scaled” mode.
Unified Storyboard for Universal Apps
Previously when developing a universal app, you would create separate storyboards for the iPhone and the iPad. In iOS 8, you can work on the same storyboard to create interfaces that work well on the iPhone and iPad in different orientations.
This is achieved by adjusting the UI components for different size classes. Size classes define the canvas size used in layouts. There are compact and regular size classes and either one can be horizontal or vertical.
When you create a project, Interface Builder starts out in the size class for any width and height. You can use this to layout what is common in your app across all size classes. Then you select different class sizes and set up UI components and constraints for the different corresponding sizes and orientations.
Adaptive View Controllers
With adaptive View Controllers, the same piece of code can be sued in your views for both iPhone and iPad without undertaking device checks.
On the code side, a new class (UITraitCollection) is used to describe a collection of traits assigned to an object. Traits specify the size class, display scale, and idiom for a particular object. Two new protocols (UITraitEnvironment and UIContentContainer) help do control on the view controller when its traits or content changes.
Auto Layout in Xcode
With Auto Layout, you can define constraints to control how your user interface adapts immediately to any size changes. Interface Builder can automatically create all your constraints for you, ensuring a set of compatible rules. You can also take direct control of constraints to define the exact priority of each, defining how your app will work on different screen sizes, when rotated, or when run in new locales.
Adaptive Text and Tables
TextKit (TextKit.framework) is the powerful text engine and API in iOS that provides sophisticated text handling and typesetting capabilities. Learn how to use TextKit to draw and manage text with adaptive UI.
For table views, You can now create tables that respond to changes with dynamic type rows without implementing the delegate method tableView:heightForRow AtIndexPath:. Also Table view cells natively support auto layout so tables should have a consistent view across different screen sizes.
Support New Screen Scales
When introducing iOS 4 as well as iPhone 4, the SDK brings a new screen scale of 2x to facilitate the development on both original and retina screens. Now, with iPhone 6 Plus, its new Retina HD display brings another screen scale – 3x.
Although it is not fully scaled as discussed above, when doing development agains iPhone 6 Plus, we still need to prepare for a third set of image, which are recognized an @3x suffix.
When shifting the development to a new iOS SDK, you also need to pay attention to those Deprecated APIs. If your app is using the APIs which are deprecated in the new SDK version, definitely you need to modify the app to use new “available apis”.
In iOS 8, the following are major changes:
- The UIApplication methods and properties for registering notifications. A new set of APIs are provided.
- The UIViewController methods and properties for interface orientation. They are replaced by the new Traits and size classes. There are other smaller changes to UIKit API to support size classes; often older interfaces that used specific device idioms have been replaced.
- The UISearchDisplayController class. It is replaced by the UISearchController class.
- Methods and properties in GameKit that use player identifier strings.
Check iOS 8.0 API Diffs for a complete list of specific API deprecations.
Test App during Development
Since iOS 7, Apple introduced a new testing framework (XCTest.framework), which is a modernized reimplementation of OCUnit, the previous-generation testing framework. XCTest offers better integration with Xcode and lays the foundation for future improvements to Xcode testing capabilities.
In iOS 8, XCTest add more APIs to extend the capability of doing test.
The new APIs (with XCTestExpectation class) allow the creation of asynchronous control flow that manages asynchronous activities. Through XCTestExpectation, expectation objects are created to describe expected events. A new APIs in XCTestCase (waitForExpectationsWithTimeout method) is used to waits for the expectation to fulfill and sets a timeout.
In the method of waitForExpectationsWithTimeout, a completion handler will be called either when all the events are fulfilled or when the timeout hits.It can be waiting on multiple asynchronous events at the same time making it easier to test code and system interactions that execute asynchronously such as file IO, network requests etc.
By using measureBlock() in XCTest, it can measure and quantify the performance of different parts of an application.
You can set a baseline performance metric on a test. The test will be run several times and on each run, the performance is compared to subsequent runs, measuring the change over time. If the average performance measure deviates considerably from the baseline, the test will fail, alerting you to a performance regression.
Do Beta Testing
Eventually, Apples gets Beta Testing service into iOS deployment cycle by introducing TestFlight.
To use TestFlight to do beta testing, you need to add testers (name and email address) into iTunes Connect. So far, it only support internal testing – up to 25 internal testers who have been assigned the Technical or Admin role in iTunes Connect. Soon it will expended up to 1,000 users, including external people.
Do App Review
The biggest change to App Review Process is to add app preview video when submitting the app and it will shows on the app details page in the App Store. By using the preview video, it gives a chance to show customers what the app does before actual download.
App preview video is Optional.
Besides app preview video, another big part of changes to the guidelines is about user privacy protection. Since some new capabilities introduced (like HealthKit, HomeKit, new CloudKit, etc.), to prevent app from leaking these user privacy data should be a significant consideration during app review. Here are some highlights:
- 25.8 “Apps offering Keyboard extensions may only collect user activity to enhance the functionality of their keyboard extension on the iOS device or they may be rejected.”
- 26.3 “Apps must not use data gathered from the HomeKit APIs for advertising or other use-based data mining.”
- 27.3 “Apps using the HealthKit framework that store users’ health information in iCloud will be rejected.”
- 27.5 “Apps that share user data acquired via the HealthKit API with third parties without user consent will be rejected.”
- 27.8 “Apps that provide diagnoses, treatment advice, or control hardware designed to diagnose or treat medical conditions that do not provide written regulatory approval upon request will be rejected.”
- iOS 8 for Developers
- Ready for iOS 8? So is Parse Push
- How iOS 8 could break your hybrid mobile app
- iPhone 6 Plus resolution confusion: Xcode or Apple’s website? for development
- iOS 8 and iPhone 6 for web developers and designers: next evolution for Safari and native webapps
- Getting Your App Ready for iOS 8
- Thinking In Terms Of iOS 8 Size Classes
- XCTestCase / XCTestExpectation / measureBlock()
- Apple updates developer rules ahead of iOS 8 launch