Apple has just seeded iOS 8.1 to developers. This makes one of the fastest iOS x.1 releases ever — normally the first beta is released a couple months after the new version of iOS ships. It could have to do with an much more aggressive software release schedule and the fact that Apple not only has the upcoming Apple Pay update, but most likely a software update for the company’s new iPads, and another one early next year to support Apple Watch. The change log follows below.
Introduction
iOS SDK 8.1 provides support for developing iOS apps. It is packaged with a complete set of Xcode tools, compilers, and frameworks for creating apps for iOS and OS X. These tools include the Xcode IDE and the Instruments analysis tool, among many others.With this software you can develop apps for iPhone, iPad, or iPod touch running iOS 8. You can also test your apps using the included iOS Simulator, which supports iOS 8. iOS SDK 8.1 requires a Mac computer running OS X v10.9.3 (Mavericks) or later.
This version of iOS is intended for installation only on devices registered with the Apple Developer Program. Attempting to install this version of iOS in an unauthorized manner could put your device in an unusable state.
For more information and additional support resources, visit http://developer.apple.com/programs/ios/.
Bug Reporting
For issues not mentioned in the Notes and Known Issues section, please file bugs through the Apple Developer website (https://developer.apple.com/bug-reporting/ios/). Additionally, you may discuss these issues and iOS SDK 8.1 in the Apple Developer Forums: http://devforums.apple.com. To get more information about iCloud for Developers, go to http://developer.apple.com/icloud.
Notes and Known Issues
The following issues relate to using iOS SDK 8.1 to develop code.AVCapture
Known Issue
Use of the new constant, AVCaptureISOCurrent, will result in inconsistent ISO values (as observed on the ISO property) if setExposureModeCustomWithDuration:ISO:completionHandler: is called repeatedly.
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. SeeABPeoplePickerNavigationController.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.
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 the URLForDirectory:inDomain:appropriateForURL:create:error: method of the NSFileManager class. See Accessing Files and Directories in File System Programming Guide.
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
Fixed in iOS 8.1 Beta
GameController forwarding may not work.
HealthKit
Note
Code that attempts to read workout information in HealthKit may be unable to make subsequent queries to HealthKit.If you are using HKWorkouts you should avoid reading workouts when running on iOS versions prior to 8.1 with:
NSOperatingSystemVersion ios8_1_0 = (NSOperatingSystemVersion){8, 1, 0};
if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:ios8_1_0]) {
// Read and write workout information to health kit.
} else {
// Write workout information to health kit
}
Fixed in iOS 8.1 Beta
Background delivery of HealthKit data does not work as expected.
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 Backup
Known Issue
After restoring from iCloud backup you may be unable to sync new music or movie content from iTunes.
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
Fixed in iOS 8.1 Beta
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 returns errSecInteractionNotAllowed.
Keyboards
Fixed in iOS 8.1 Beta
Network access gets disabled after adding a new keyboard from the same bundle.
Custom Keyboards may go blank after app switching.
Known Issue
3rd party keyboards may not appear in Safari, Maps or 3rd party apps on the Simulator.Workaround: Keyboards should be testable in Calendar, Spotlight, Contacts, and Photos.
Fixed in iOS 8.1 Beta
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.
Metal
Fixed in iOS 8.1 Beta
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 from viewWillAppear: on the results of this operation. Instead, widgets should load cached state in viewWillAppear: in order to match the state of the view from the last viewWillDisappear:, 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, and NSURLSessionTaskPriorityHigh. 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 of NSURLSessionTask performance.For complete usage details of NSURLSessionTask priorities, refer to the NSURLSession.h header file, which is provided by the Foundation framework.
Phone
Note
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
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. Any photos and videos synced to your device from iTunes will be removed when you enable iCloud Photo Library beta.
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.
Fixed in iOS 8.1 Beta
The ability to automatically optimize device space is enabled for all accounts larger than 5GB.
Known Issues
If iCloud Photo Library beta is enabled, Settings -> iCloud -> Photos may crash.Workaround: Use Settings -> Photos & Camera to manage settings for Photos.
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.
Provisioning Profiles
Known Issue
If you have upgraded to the 8.1 Beta from iOS 8 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
Speech Synthesis
Fixed in iOS 8.1 Beta
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
Fixed in iOS 8.1 Beta
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 for clipsToBounds. This differs from the normal UIView default of NO.
The leftLayoutGuide and rightLayoutGuide APIs have been removed. Please use the layoutMargins property instead.
Fixed in iOS 8.1 Beta
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.
WebKit
Note
The Navigation Timing API has been disabled only on iOS due to performance issues.
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.