Apple has had its work cut out for it this summer. The first few beta releases of iOS 8 seemed rushed and buggy, but Apple engineers have clearly pulled things together in the past few betas. The result is a mobile operating system that is almost ready for prime time, but there were a few more wrinkles to iron out before iOS 8 reaches the public next week. Now, Apple has released the Gold Master version of iOS 8 as it prepares to finalize its code and issue the final version of iOS 8.
FROM EARLIER: Cutting through the hype: The 5 best new features in iOS 8
The iOS 8 GM is available right now for developers with compatible iPhone, iPad and iPod touch devices. It can be downloaded from Apple’s developer portal and installed using iTunes.
For non-developers who have not listened to our repeated advice, iOS 8 GM will obviously address most of the remaining issues but there will still be a few bugs here and there. Those who would prefer to ditch iOS 8, roll back to a public iOS build and wait for the actual release version of iOS 8 can reinstall the latest version of iOS 7.1 by following this guide. Then, you can update again once the final version of iOS 8 is released ahead of Apple’s iPhone 6 launch.
Of note, however, the GOld Master version of iOS 8 should be identical to the public release version coming next week.
For more on iOS 8, read our preview: A week with iOS 8
Here are Apple’s full iOS 8 GM release notes.
Notes and Known Issues
The following issues relate to using iOS SDK 8.0 to develop code.
AVCapture
Known Issue
Use of the new constant,
AVCaptureISOCurrent
, will result in inconsistent ISO values (as observed on the ISO property) ifsetExposureModeCustomWithDuration:ISO:completionHandler:
is called repeatedly.Backup and Restore
Fixed in GM Seed
Encrypted backups to iTunes fail.
iOS 7 iCloud backups restored to an iOS 8 beta device may not properly restore photos.
CloudKit
Note
A single
CKAsset
instance can no longer be set as a value on multiple CKRecords.Contacts
Note
The Address Book UI people picker has been changed for iOS 8. A new mode with new API has been added where the app does not need access to the user’s contacts and the user will not be prompted for access. A temporary copy of the selected person is returned to the app. See
ABPeoplePickerNavigationController.h
for more details.See the new PeoplePicker: Picking a Person or Property sample project demonstrating usage of the new mode.
Document Providers
Notes
Your app needs the iCloud entitlement to be able to be used as a document provider.
The com.apple.developer.icloud-container-identifiers entitlement will be required when iOS 8 is released.
Fixed in GM Seed
On iPhone, bringing up DocMenu from Locations in DocPicker, overlaps with status bar.
Known Issues
After rotating document picker to landscape, the status bar is hidden.
Upon bringing up document picker in landscape, the containing view may be shifted beneath the navigation bar.
Extensions
Notes
Extensions need an arm64 slice to run on 64-bit devices. If you try to run the armv7 slice on a 64-bit device it won’t work.
Apps need to have an arm64 slice if the bundle contains a framework that both the app and the app extension link against.
File System
Note
The file system layout of app containers has changed on disk. Rather than relying on hard-coded directory structure, use the
NSSearchPathForDirectoriesInDomains
function or theURLForDirectory:inDomain:appropriateForURL:create:error:
method of theNSFileManager
class. See Accessing Files and Directories in File System Programming Guide.Find My Friends
Note
Now that the Share My Location feature is integrated into Messages, Find My Friends only supports the Apple ID configured in Settings > iCloud.
Fonts
Note
The Thai system font has increased in size to improve readability. This will cause clipping in many places in your UI if you don’t take appropriate action:
Use
UILabel
as much as possible. If you use Interface Builder, make sure that Clip Subviews is not checked. UIKit will grow the clipping region as necessary to not clip text.Use Dynamic Type. This will ensure that you do not have overlapping glyphs in multiline labels or text fields.
If you can’t do 1 and 2 because you implement your own views, you must implement measures not to clip. You can use CoreText to figure out the appropriate clipping region for a line of text by calling:
CTLineGetBoundsWithOptions(lineRef, kCTLineBoundsIncludeLanguageExtents);
To avoid overlapping glyphs in multiline text elements, adjust the line height. An additional 30% is recommended.
This measure will also help your app perform better in other languages, including Arabic, Hindi, and Vietnamese.
GameController
Known Issue
GameController forwarding may not work.
Workaround:
Verify that you are on the same Wi-Fi network on both devices, Handoff is enabled, and the same iCloud account is being used.
Make sure no other instances of the game are running (e.g. only the target device has the game you are trying to connect).
Reboot.
HealthKit
Known Issues
Background delivery of HealthKit data does not work as expected in this build.
Code that attempts to read workout information from HealthKit in iOS 8.0 may be unable to make subsequent queries to HealthKit.
Workaround: If you are using
HKWorkouts
andHKWorkoutEvents
, you can avoid this by using the following pattern:
NSOperatingSystemVersion ios8_0_1 = (NSOperatingSystemVersion){8, 0, 1};
if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:ios8_0_1]) {
// Read and write workout information to health kit.
} else {
// Write workout information to health kit
}
HomeKit
Notes
After upgrading to the GM Seed, you should reset your home configuration in Settings > Privacy > HomeKit > Reset Home Configuration.
You must sign into iCloud and enable Keychain sync to use HomeKit with this seed.
Fixed in GM Seed
Siri may not immediately recognize HomeKit data changes.
iCloud
Note
Mail handoff and AirDrop may stop working after changing your iCloud password at appleid.apple.com.
Workaround: Sign out and back into iCloud on the device.
iCloud Drive
Note
URLForUbiquityContainerIdentifier:
might return nil when running your application in Xcode. If so, open System Preferences, navigate to iCloud > iCloud Drive, and enable Xcode.iCloud Keychain
Known Issues
When logging into iCloud, a user may experience a keychain reset on their other devices that were previously in the circle.
Touch ID protected keychain items do not allow
SecItemUpdate
. SecItemUpdate always returnserrSecInteractionNotAllowed
.Workaround: Instead of updating, the items have to be deleted and added again.
iTunes Sync
Fixed in GM Seed
Apps do not sync from a device to iTunes.
Keyboards
Known Issues
Network access gets disabled after adding a new keyboard from the same bundle.
Custom Keyboards may go blank after app switching.
Workaround: Dismiss the keyboard and bring it up again; this should reload the view.
Known Issue
Applying the Allow Account Modification restriction to a device with no mail accounts configured will still allow a user to create a Mail account by launching the Mail app.
Maps
Fixed in GM Seed
When viewed in the Simulator, the “Hybrid” view in Maps and MapKit apps does not show all of the tiles.
Metal
Known Issue
When you modify a metal file shader using offline compilation to create a metallib library that has shrunk in size, the metallib library will fail to load on the device.
Workaround: Delete the metallib library before recreating it by doing a clean in Xcode or removing the file manually before building the archive.
Notification Center
Note
The schedule and intended use of
widgetPerformUpdateWithCompletionHandler:
is intended as a convenient home for all data/model update logic. If implemented, the system will call at opportune times for the widget to update its state, both when Notification Center is visible, as well as in the background. An implementation is required to enable background updates. It’s expected that the widget will perform the work to update asynchronously and off the main thread as much as possible. Widgets should call the argument block when the work is complete, passing the appropriateNCUpdateResult
. Widgets should NOT block returning fromviewWillAppear:
on the results of this operation. Instead, widgets should load cached state inviewWillAppear:
in order to match the state of the view from the lastviewWillDisappear:
, then transition smoothly to the new data when it arrives.NSURLSession
Note
The
NSURLSessionTask
class provides a new “priority” property with three associated constants:NSURLSessionTaskPriorityDefault
,NSURLSessionTaskPriorityLow
, andNSURLSessionTaskPriorityHigh
.NSURLSessionTask
priorities can be used to specify how multiple requests and responses to the same host should be prioritized. Note that the priority is a hint and not a strict guarantee ofNSURLSessionTask
performance.For complete usage details of
NSURLSessionTask
priorities, refer to theNSURLSession.h
header file, which is provided by the Foundation framework.Phone
Notes
To activate Wi-Fi Calling functionality for T-Mobile (U.S. only), follow these steps:
Go to Settings > Phone > Wi-Fi Calling.
Toggle the Wi-Fi Calling switch to ON.
If the carrier does not have the user’s registered emergency address, you will be asked to add it before the feature is activated.
Photos
Notes
If you installed Beta 5 on the device, you should erase the device after installing the GM Seed. (Settings > General > Reset > Erase All Content and Settings).
iCloud Photo Library requires the GM Seed.
Maintain a backup of your photo library before enabling and while using iCloud Photo Library beta by:
Importing to your Mac using iPhoto
Importing to your Mac using Image Capture
iCloud Photo Library beta will not download photos and videos that were synced to your device from iTunes.
iPhoto for iOS will not launch on iOS 8 Beta. Launching Photos.app will migrate your iPhoto edits to the iOS 8 Photo Library. Make sure your iPhoto for iOS data is included in your device backup.
Known Issues
The ability to automatically optimize device space is enabled for all accounts larger than 5GB.
When using iCloud Family Sharing, both iCloud Photo Sharing and My Photo Stream are enabled.
If you exceed your iCloud storage quota, your Photos library will no longer update iCloud. Photos and videos can be downloaded or deleted from iCloud.com.
Provisioning Profiles
Known Issue
If you have upgraded to the GM seed from other betas you may see your apps crashing due to provisioning profile issues.
Workaround:
-
Connect the device via USB to your Mac
-
Launch Xcode
-
Choose Window -> Devices
-
Right click on the device in left column, choose “Show Provisioning Profiles”
-
Click on the provisioning profile in question
-
Press the “-” button
-
Continue to removing all affected profiles.
-
Re-install the app
Quicklook
Fixed in GM Seed
PDF files may not display in some applications.
Safari
Notes
-
Safari now blocks ads from automatically redirecting to the App Store without user interaction. If you still see the previous behavior, or find legitimate redirection to the App Store to be broken in some way, please file a bug.
-
You can now quickly add a site to Shared Links or save a bookmark by tapping and holding the bookmarks button.
Settings
Fixed in GM Seed
Some icons are missing in Settings and only appear after the row is tapped.
Setup
Fixed in GM Seed
Updating the iCloud settings screen may appear to hang during setup.
Speech Synthesis
Known Issue
AVSpeechSynthesizer
may not work.
Workaround: If you don’t hear speech in a particular language or dialect, go Settings > General > Accessibility > Speech >Voices >Language and download the Enhanced Quality voice for that language/dialect.
Stores
Known Issue
Sometimes, loading certain pages or performing a search on the App Store or iTunes Store can be slow.
UIKit
Notes
-
UILabel
has a default value of YES forclipsToBounds
. This differs from the normalUIView
default of NO. -
The
leftLayoutGuide
andrightLayoutGuide
APIs have been removed. Please use thelayoutMargins
property instead.
Fixed in GM Seed
To use an action sheet-style UIAlertController
on iPad, the sourceView of the alert controller’s popoverPresentationController must be set.
Known Issue
RTF file support in UIWebView
is broken.
Workaround: Show RTF files to the user is to use the Quick Look framework (QLPreviewController) or to load an NSAttributedString from the RTF file and show it in an UITextView, which will render the content in a much cleaner way.
Wi-Fi Calling (T-Mobile US only)
Note
The carrier name in the status bar will show “T-Mobile Wi-Fi” when the device is able to make and receive Wi-Fi calls.
WebKit
Notes
-
Subpixel rendering is now on by default for all web content. Websites or in-app web views with extremely tight design constraints may render differently. Solutions for each issue will vary, but use Web Inspector to adjust position, border thickness, and width or height of elements.
-
The
minimal-ui
viewport property is no longer supported in iOS 8.
Known Issues
-
The
window.outerWidth
andwindow.outerHeight
DOM properties always return 0. Other DOM properties will need to be used instead. This may affect websites that use leaf.js. -
Third party apps that use
WKWebView
will not be able to participate in Kerberos Single Sign On reliably. To work around this issue, useUIWebView
instead.