iOS SDK 9.1 beta 3 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 9. You can also test your apps using the included Simulator, which supports iOS 9. iOS SDK 9.1 requires a Mac computer running OS X v10.10.3 (Yosemite) 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.
By default, the iOS 9.1 beta automatically sends anonymous diagnostic and usage data back to Apple. This includes information about crashes, freezes, kernel panics, and information about how you use Apple and third-party software, hardware, and services. This information is used to help Apple improve the quality and performance of its products and services. You can stop autosubmission of diagnostics and usage data by going to Settings > Privacy > Diagnostics and Usage > Don’t Send.
Notes and Known Issues
Apple ID
Known Issue
If you sign in with different Apple IDs for iCloud and iTunes during Setup Assistant, it may hang.
Workaround: Do not use different Apple IDs for iCloud and iTunes during Setup Assistant. After setup, sign in by going to Settings > App and iTunes Stores.
iCloud Keychain
Note
During the iOS 9.1 beta, iCloud Keychain accounts with two-factor authentication enabled will use beta servers. If you do not want your iCloud Keychain data stored on beta servers, do not use the beta software.
Fixed in Beta 3
If you disable two-factor authentication on your iCloud account, your iCloud Keychain may also get turned off.
Workaround: Confirm that iCloud Keychain is still on in Settings after disabling two-factor authentication.
When activating iCloud Keychain in Settings on iPad, you may be unable to complete the activation.
Known Issue
Sometimes while setting up iCloud Keychain, you receive a "Could Not Set Up iCloud Keychain" error.
Workaround: Reboot the device.
Metal
Note
For tvOS Metal development, it is required that you use the tvOS-specific feature set enum MTLFeatureSet_TVOS_GPUFamily1_v1.
PhotoKit
Known Issue
If your app gets the gesture recognizer from the PHLivePhotoView object (via playbackGestureRecognizer) to install it on a different view, subsequently setting a new value forlivePhoto on the PHLivePhotoView object causes it to reinstall the gesture recognizer on itself.
Workaround: Your app can get the gesture recognizer and reinstall it on the appropriate view every time after setting a value for livePhoto.
Podcasts
Fixed in Beta 3
The sleep timer does not work in this beta.
Restore
Fixed in Beta 3
If you’ve set a region that doesn’t match your language, restores from iCloud Backup might not progress.
Workaround: During restore, change your region to match your language. You can change it back after the restore is over.
Known Issue
Sometimes while restoring from iCloud backup, you will not see your list of backups, if you have two-factor authentication enabled on your iCloud account.
Settings
Known Issue
Settings may become unresponsive after signing into an iMessage or FaceTime account.
Workaround: Quit Settings from the App Switcher.
Siri
Known Issue
When asking Siri to play music, Siri will return an error but will still play back the music requested.
UIKit
Note
On 3D Touch capable devices, touch pressure changes cause touchesMoved:withEvent: to be called for all apps running on iOS 9.0. When running iOS 9.1, the method is called only for apps linked with the iOS 9.0 (or later) SDK.
Apps should be prepared to receive touch move events with no change in the x/y coordinates.
iOS SDK 9.1 beta 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 9. You can also test your apps using the included Simulator, which supports iOS 9. iOS SDK 9.1 requires a Mac computer running OS X v10.10.3 (Yosemite) 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.
By default, the iOS 9.1 beta automatically sends anonymous diagnostic and usage data back to Apple. This includes information about crashes, freezes, kernel panics, and information about how you use Apple and third-party software, hardware, and services. This information is used to help Apple improve the quality and performance of its products and services. You can stop autosubmission of diagnostics and usage data by going to Settings > Privacy > Diagnostics and Usage > Don’t Send.
During the iOS 9.1 Beta, iCloud Keychain for iCloud accounts with two-factor authentication enabled will use beta servers. If you do not want your iCloud Keychain data stored on beta servers, do not use the beta software.
Known Issues
Sometimes while setting up iCloud Keychain, you recieve a "Could Not Set Up iCloud Keychain" error.
Workaround: Reboot the device.
If you disable Two-Factor Authentication on your iCloud account, your iCloud Keychain may also get turned off.
Workaround: Confirm that your Keychain is still on in Settings after disabling Two-Factor Authentication.
When activating Keychain in Settings on iPad, you may be unable to complete the activation.
If you have an account with Two-Factor Authentication and set up iCloud Keychain, it may not succeed if you take a few minutes to get through Setup Assistant.
Workaround: Go back to the beginning of Setup Assistant and sign into iCloud again.
If you had been using a Random Security Code for your Keychain before upgrading to iOS 9.1 Beta, tapping “Back” when prompted to enter your security code in Setup Assistant may result in a sign-in failure.
Workaround: Go back to the beginning of Setup Assistant and sign into iCloud again.
If you change your device passcode while in Airplane Mode, you iCloud Keychain may cease to sync with other devices.
Keyboards
Known Issue
3rd party keyboards don’t appear in sharing sheets and action sheets.
Workaround: Use the Apple keyboard.
PhotoKit
Known Issue
If you add a PHLivePhotoView to an app UI in Interface Builder, it might end up as a regular UIView object at runtime.
Workaround: Declare a dummy PHLivePhotoView subclass in your code:
If you try to play the last item in a list, Podcasts may crash.
Restore
Known Issue
If you’ve set a region that doesn’t match your language, restores from iCloud Backup might not progress.
Workaround: During restore, change your region to match your language. You can change it back after the restore is over.
UIKit
Note
On 3D Touch capable devices, touch pressure changes cause touchesMoved: to be called. This is true for all apps running on iOS 9.0. When running iOS 9.1, it is true only for apps linked with the iOS 9.0 (or greater) SDK.
Apps should be prepared to receive touch move events with no change in the x/y coordinates.
iOS SDK 9.1 beta 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 9. You can also test your apps using the included Simulator, which supports iOS 9. iOS SDK 9.1 requires a Mac computer running OS X v10.10.3 (Yosemite) 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.
By default, the iOS 9.1 beta automatically sends anonymous diagnostic and usage data back to Apple. This includes information about crashes, freezes, kernel panics, and information about how you use Apple and third-party software, hardware, and services. This information is used to help Apple improve the quality and performance of its products and services. You can stop autosubmission of diagnostics and usage data by going to Settings > Privacy > Diagnostics and Usage > Don’t Send.
During the iOS 9.1 Beta, iCloud Keychain for iCloud accounts with two-factor authentication enabled will use beta servers. If you do not want your iCloud Keychain data stored on beta servers, do not use the beta software.
Known Issues
Sometimes while setting up iCloud Keychain, you recieve a "Could Not Set Up iCloud Keychain" error.
Workaround: Reboot the device.
If you disable Two-Factor Authentication on your iCloud account, your iCloud Keychain may also get turned off.
Workaround: Confirm that your Keychain is still on in Settings after disabling Two-Factor Authentication.
When activating Keychain in Settings on iPad, you may be unable to complete the activation.
If you have an account with Two-Factor Authentication and set up iCloud Keychain, it may not succeed if you take a few minutes to get through Setup Assistant.
Workaround: Go back to the beginning of Setup Assistant and sign into iCloud again.
If you had been using a Random Security Code for your Keychain before upgrading to iOS 9.1 Beta, tapping “Back” when prompted to enter your security code in Setup Assistant may result in a sign-in failure.
Workaround: Go back to the beginning of Setup Assistant and sign into iCloud again.
If you change your device passcode while in Airplane Mode, you iCloud Keychain may cease to sync with other devices.
Keyboards
Known Issue
3rd party keyboards don’t appear in sharing sheets and action sheets.
Workaround: Use the Apple keyboard.
PhotoKit
Known Issue
If you add a PHLivePhotoView to an app UI in Interface Builder, it might end up as a regular UIView object at runtime.
Workaround: Declare a dummy PHLivePhotoView subclass in your code:
If you try to play the last item in a list, Podcasts may crash.
Restore
Known Issue
If you’ve set a region that doesn’t match your language, restores from iCloud Backup might not progress.
Workaround: During restore, change your region to match your language. You can change it back after the restore is over.
UIKit
Note
On 3D Touch capable devices, touch pressure changes cause touchesMoved: to be called. This is true for all apps running on iOS 9.0. When running iOS 9.1, it is true only for apps linked with the iOS 9.0 (or greater) SDK.
Apps should be prepared to receive touch move events with no change in the x/y coordinates.
iOS SDK 9.0 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 9. You can also test your apps using the included Simulator, which supports iOS 9. iOS SDK 9.0 requires a Mac computer running OS X v10.10.3 (Yosemite) 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.
By default, the iOS 9 beta automatically sends anonymous diagnostic and usage data back to Apple. This includes information about crashes, freezes, kernel panics, and information about how you use Apple and third-party software, hardware, and services. This information is used to help Apple improve the quality and performance of its products and services. You can stop autosubmission of diagnostics and usage data by going to Settings > Privacy > Diagnostics and Usage > Don’t Send.
Notes and Known Issues
The following issues relate to using iOS SDK 9.0 to develop code.
Accessories
Fixed in Beta 5
Lightning video dongles don’t work with this beta.
App Store
Note
iOS 9 enforces the UILaunchImages requirement; apps can no longer declare the same launch image to support different interface orientations.
Known Issue
Users might be prompted twice for credentials on the first In-App Purchase.
Apple ID
Note
Some users will be offered the option to upgrade their Apple ID to use two-factor authentication. For more information about two-factor authentication see developer.apple.com/support/two-factor-authentication. Two-factor authentication is not supported on iOS 9 betas prior to beta 3.
Fixed in Beta 5
You may not be able to create a new Apple ID in Settings or Setup Assistant.
Workaround: Create a new iCloud account on iCloud.com.
You cannot manage your two-factor authentication trusted devices at appleid.apple.com.
Workaround: You can find and manage trusted devices in Settings > iCloud > yourName > Devices.
Removing a device from your account removes it as a trusted device for two-factor authentication, but will not sign out of any services or permanently remove it from the device list.
Workaround: To fully remove a device, click Remove From Account then sign out of iCloud in device Settings of the device you want to remove.
Known Issues
iForgot links may work intermittently.
Workaround: Please try again.
If you upgrade your Apple ID to use two-factor authentication, iTunes purchases on Mac and Windows and store purchases on Apple TV will require you to append a six-digit verification code to the end of your password on every purchase. The six-digit code will display automatically on your iOS 9 or OS X El Capitan devices, or can be sent to your trusted phone number via a text message or phone call.
If your Apple ID uses two-factor authentication, you may not be able to sign in to services that use Apple ID on iOS 9 and OS X El Capitan beta installations earlier than beta 3.
If you disable two-factor authentication and set a new password at iForgot.apple.com, the password requirements are not indicated so your password may not be accepted.
Workaround: Make sure your password meets these requirements:
Have at least one lowercase letter
Have at least one uppercase letter
Have at least one number
Your password must not contain more than two consecutive identical characters
Not be the same as the account name
Be at least 8 characters
Not be a common password
AVFoundation
Notes
The canUseNetworkResourcesForLiveStreamingWhilePaused property has been added to AVPlayerItem. The default value is NO for apps linked on or after iOS 9.0 or OS X 10.11, but YES for apps that were linked earlier.
To minimize power usage, set this property to NO if you do not need playback state to stay up to date while paused.
AVQueuePlayer now supports a mixture of file-based media and HTTP Live Streaming media in its queue. Prior to this, you had to ensure that all items in the queue were of the same type.
For apps linked against iOS 9 or later, the media interruption behavior for AV(Queue)Player has changed.
Before iOS 9, apps could interrupt other media-playing clients by associating or adding AVPlayerItem to AVPlayer or by modifying the time or date of the current AVPlayerItem (using the seekToTime: or seekToDate: methods). In iOS 9, these operations interrupt only when AVPlayer object’s playback rate is changed to a non-zero value through the rate property or play method.
Picture in Picture playback might stop and the Picture in Picture button might disappear when using AVPlayerViewController for video playback and replacing the underlying AVPlayer object’s current item usingreplaceCurrentItemWithPlayerItem:.
The AVPictureInPictureController interface and the cancelPictureInPicture method are deprecated.
Calendar
Fixed in Beta 5
Calendar may hang if you tap Ignore on a suggested event.
CarPlay
Fixed in Beta 5
The Home button may not always work.
Known Issue
The navigation bar in Maps can sometimes get into a state where it is inaccessible.
CBCentralManager
Note
The retrievePeripherals: and retrieveConnectedPeripherals methods were deprecated in iOS 7.0 and removed in iOS 9.0. Apps that use these methods will crash on launch or upon pairing an accessory.
Enterprise
Note
iOS 9 adds support for TLS v1.2 in 8021.X authentication. Authentication servers that support TLS v1.2 may require an update for compatibility. If you are using FreeRADIUS, update to version 2.2.7 or 3.0.8. If you are using Aruba ClearPass update to version 6.5.2. If you are using other Aruba products, update to ArubaOS 6.4.2.9.
Foundation
Notes
There is new Foundation API that can be used to detect if the device is in Low Power Mode. See the updated Energy Efficiency Guide for iOS Apps for details.
Horizontal location constraints should consistently reference either left/right or leading/trailing attributes. For apps linked against the iOS 9 SDK, NSLayoutConstraint will throw an exception if you attempt to create a constraint between a leading/trailing attribute and a left/right attribute.
HealthKit
Known Issue
In rare circumstances, it is possible for the health database to be deleted during an upgrade to a beta build.
Workaround: To make sure the health database is not lost, make an encrypted iTunes backup prior to installing this beta.
Although keeping the device unlocked for the duration of the upgrade process reduces the risk of the database being destroyed, it’s recommended that you create a backup so that you can recover the database if you encounter this issue.
Home Sharing
Fixed in Beta 5
If you have an empty music library, you will be unable to enable or disable Home Sharing in Music.
The Home Sharing option doesn't always appear in My Music.
Russian, Turkish, and Korean QuickType keyboards require iOS 9 beta 2 or later.
Fixed in Beta 5
If you use a complex passcode on an iPad, some panes in Settings will now show the keyboard.
Keychain
Note
iCloud Keychain will not sync passwords & credit cards with previous betas of iOS 9 and OS X El Capitan.
Fixed in Beta 5
You may not be able to accept a Suggested Password when creating a new account.
You may be unable to join an existing iCloud Keychain circle using iCloud Security Code and SMS Verification Code.
After changing your iCloud password, you may see an “iCloud Keychain Reset” prompt.
If you have two-step verification enabled on your AppleID and then change your iCloud Keychain or iCloud Security Code on a non-trusted device, you see a “Verification Failed” error.
If your iCloud account uses two-factor authentication, you will get a sign-in alert on all logged-in iOS 9 or OS X El Capitan devices whenever there is a change in the phone number in Settings > iCloud > Keychain > Advanced.
Mail
Known Issue
A Yahoo mail account may periodically display “Cannot get mail.”
Maps
Known Issue
If you use Siri to get driving, walking, or transit directions, you may see a failure with a dialog that says “Current Location not Available.”
Workaround: Toggle Wi-Fi and then try again. Alternatively, get directions in Maps directly without using Siri.
Messages
Fixed in Beta 5
When recording audio messages, the audio glyphs are not shown. This occurs in both quick reply and in the Messages app.
When you send an audio message, it may be difficult to begin playback.
Music
Note
When users plug in headphones or connect to Bluetooth or CarPlay in their car, their favorite music app appears on the lock screen or the car display.
For your app to be eligible for this, it must publish to Now Playing upon launch and consistently maintain a Now Playing state. A common practice upon launch is to continue playing the track from when the app was last exited.
Known Issues
The share sheet may not appear when sharing tracks from Apple Music.
The New tab may not load if you are not signed into Apple Music.
Networking
Note
When negotiating a TLS/SSL connection with Diffie-Hellman key exchange, iOS 9 requires a 1024-bit group or larger. These connections include:
Secure Web (HTTPS)
Enterprise Wi-Fi (802.1X)
Secure e-mail (IMAP, POP, SMTP)
Printing servers (IPPS)
Photo Booth
Fixed in Beta 5
Photos taken with Photo Booth are not saved.
ReplayKit
Known Issue
Playing a video while ReplayKit recording is ON will stop ongoing recording session and video will fail to play.
Safari
Fixed in Beta 5
Fixed a bug where calling reloadContentBlockerWithIdentifier:completionHandler: returned an error when running on a physical device.
Notes
When Done is tapped in a SFSafariViewController, it is automatically dismissed. You no longer need to dismiss it in the delegate method safariViewControllerDidFinish:.
“Find on Page” is now available both from the share sheet as well as in the Completions List.
Request Desktop Site has moved; it’s now in the Share sheet instead of Favorites.
Web Browser–to–Native App Handoff does not work with your app if the apple-app-site-association file isn’t correctly formatted and signed. For more information, see Handoff Programming Guide and Shared Web Credentials Reference.
Secure Transport
Note
DHE_RSA ciphersuites are now disabled by default in Secure Transport for TLS clients. This may cause failure to connect to TLS servers that only support DHE_RSA cipher suites. Applications that explicitly enable ciphersuites usingSSLSetEnabledCiphers() are not affected and will still use DHE_RSA ciphersuites if explicetely enabled.
Siri
Fixed in Beta 5
Siri cannot change Settings options.
Siri Eyes Free may not work.
You are unable to create, view, or edit notes using Siri.
Spotlight
Fixed in Beta 5
After upgrading to this beta, some contacts are not searchable in Spotlight.
UIKit
Notes
If initialized with a nilnibName value, UIViewController.nibName has always looked for a nib with a similar name as the view controller’s class, and defaulted to that value if loadView is not overridden.
Prior to iOS 9, subclasses of UIViewController that were written in Swift would require that their corresponding nib file name include the module prefix.
To improve flexibility in the event of refactoring, you can omit the module name from the nib file name in code that runs in iOS 9 beta 4 and later. UIViewController.nibName still prefers a name that contains the module prefix, but falls back to an unqualified name if a nib with the fully-qualified name is not found.
In iOS 9, when layoutIfNeeded is sent to a view and all of the following conditions are satisfied (which is not common), we apply fitting-size constraints (width/height = 0 at UILayoutPriorityFittingSizeLevel) instead of required size constraints (width/height required to match current size):
The receiver is not yet in the subtree of a view that hosts a layout engine, such as window, view controller view (unless you have set translatesAutoresizingMaskIntoConstraints to NO on that view—or created constraints that have one item in its subtree and one item outside it), table view cell content view, and so on.
The top-level view has a subview that is not a UIViewController-owned layout guide that also has translatesAutoresizingMaskIntoConstraints set to NO.
Under condition 1, we create a temporary layout engine from the top-level view and add all the constraints from the subtree to it. The problem is that we need to add some constraints that make the size of the top-level view unambiguous in the layout engine. The old behavior (prior to iOS 9) was that we would add constraints to restrict the size of the top-level view to its current bounds for any situation under condition 1. This really doesn’t make sense when you add conditions 2 and 3 and can result in unsatisfiable-constraints logging and broken layout.
So in iOS 9, for this special case only, we use fitting-size constraints instead.
This means that if you are sending layoutIfNeeded to a view under these conditions in iOS 9, you must be sure that either you have sufficient constraints to establish a size for the top-level view (which usually, though not always, is the receiver) or you must add temporary size constraints to the top-level view of layout size you desire before sending layoutIfNeeded, and remove them afterward.
For apps linked on iOS 9 or later, UITextView will now always correctly constrict its NSTextContainer to the fit inside the view when scrolling is disabled. Overflowing lines that lie outside of an NSTextContainer, even partially, are not rendered.
In previous iOS releases, the NSTextContainer sometimes was not constricted in size. This meant that logically overflowing lines were erroneously rendered. If you are seeing previously rendered lines at the end of your text view no longer rendered after linking your app against iOS 9, this behavior change is the likely cause. You can remedy this by making your UITextView larger, or perhaps by adjusting the bottom value of the text view's textContainerInset property.
Apps that subclass UIPrintPageRenderer or UIPrintFormatter to draw content for printing must be built with the iOS 9 SDK for the preview to display. The behavior of UIPrintPageRenderer has been updated to call drawPageAtIndex:inRect:multiple times with potentially different page sizes and margins. Various methods on UIPrintPageRenderer may be called from a non-main thread, but never from multiple threads concurrently.
UIPickerView and UIDatePicker are now resizable and adaptive—previously, these views would enforce a default size even if you attempted to resize them. These views also now default to a width of 320 points on all devices, instead of to the device width on iPhone.
Interfaces that rely on the old enforcement of the default size will likely look wrong when compiled for iOS 9. Any problems encountered can be resolved by fully constraining or sizing picker views to the desired size instead of relying on implicit behavior.
Known Issues
Instances of UIViewController classes that are defined in the UIKit library and are created with a nilnibBundle attempt to find their nib inside the UIKit framework instead of the app's main bundle.
Workaround: Pass [NSBundle mainBundle] for the nibBundle argument instead of nil.
Apps linked to versions of iOS earlier than iOS 8 may display incorrectly. Symptoms include cropping and displaying only in a small section of the screen.
Volume Purchase Program
Fixed in Beta 5
Apps that are distributed through VPP and are licensed to a device won't launch.
Watch App
Known Issue
Pairing iOS 9 beta 3 or 4 with watchOS 2 beta 1 or 2 requires you to sign out of your AppleID in Messages prior to pairing and to skip iCloud sign-in during pairing. Pairing with watchOS 2 beta 3 and watchOS 1 is not impacted.
Webkit
Note
The if-domain and unless-domain value strings only match the exact domain. To match the domain and any subdomains, begin the string with the asterisk character (*).
iOS SDK 9.0 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 9. You can also test your apps using the included Simulator, which supports iOS 9. iOS SDK 9.0 requires a Mac computer running OS X v10.10.3 (Yosemite) 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.
By default, the iOS 9 beta automatically sends anonymous diagnostic and usage data back to Apple. This includes information about crashes, freezes, kernel panics, and information about how you use Apple and third-party software, hardware, and services. This information is used to help Apple improve the quality and performance of its products and services. You can stop autosubmission of diagnostics and usage data by going to Settings > Privacy > Diagnostics and Usage > Don’t Send.
Notes and Known Issues
The following issues relate to using iOS SDK 9.0 to develop code.
Accessories
Known Issue
Lightning video dongles don’t work with this beta.
Activation Lock
Fixed in Beta 3
Your iPhone may indicate that Activation Lock is turned on for your Apple Watch when it is not.
App Extensions
Known Issue
Debugging an action or sharing extension can cause the extension to be missing in theUIActivityViewControllerobject.
Workaround:Go to the More list and go back to show the extension again.
App Store
Note
iOS 9 enforces theUILaunchImagesrequirement; apps can no longer declare the same launch image to support different interface orientations.
Known Issue
Users might be prompted twice for credentials on the first In-App Purchase.
Apple ID
Note
Beginning with this beta, some users will be offered the option to upgrade their Apple ID to use two-factor authentication. For more information about two-factor authentication seedeveloper.apple.com/support/two-factor-authentication. Two-factor authentication is not supported on iOS 9 betas prior to beta 3.
Known Issues
Attempting to create a new Apple ID via Game Center may cause a crash.
iForgot links may work intermittently.
Workaround:Please try again.
If you upgrade your Apple ID to use two-factor authentication, iTunes purchases on Mac and Windows and store purchases on Apple TV will require you to append a six-digit verification code to the end of your password on every purchase. The six-digit code will display automatically on your iOS 9 or OS X El Capitan devices, or can be sent to your trusted phone number via a text message or phone call.
If your Apple ID uses two-factor authentication, you may not be able to sign in to services that use Apple ID on iOS 9 and OS X El Capitan beta installations earlier than beta 3.
If you disable two-factor authentication and set a new password at iForgot.apple.com, the password requirements are not indicated so your password may not be accepted.
Workaround:Make sure your password meets these requirements:
Have at least one lowercase letter
Have at least one uppercase letter
Have at least one number
Your password must not contain more than two consecutive identical characters
Not be the same as the account name
Be at least 8 characters
Not be a common password
You cannot manage your two-factor authentication trusted devices at appleid.apple.com.
Workaround:You can find and manage trusted devices in Settings > iCloud > yourName > Devices.
Removing a device from your account removes it as a trusted device for two-factor authentication, but will not sign out of any services or permanently remove it from the device list.
Workaround:To fully remove a device, click Remove From Account then sign out of iCloud in device Settings of the device you want to remove.
If you enter an incorrect verification code for a two-factor authentication account in Setup Assistant, it may hang.
Workaround:Press the Home button and go back to start setup again.
During Setup Assistant, tapping Cancel on the prompt that prompts you to enter the code for two-factor authentication will result in getting stuck at the login screen.
Workaround:Press the Home button and go back to start setup again.
Apps that use app-specific passwords cause multiple notifications if your account uses two-factor authentication.
Workaround:Disable the app in this beta.
Audio
Known Issue
The OpenAL framework is not available in this beta.
AVFoundation
Notes
ThecanUseNetworkResourcesForLiveStreamingWhilePausedproperty has been added toAVPlayerItem. The default value isNOfalsefor apps linked on or after iOS 9.0 or OS X 10.11, butYEStruefor apps that were linked earlier.
To minimize power usage, set this property toNOfalseif you do not need playback state to stay up to date while paused.
AVQueuePlayernow supports a mixture of file-based media and HTTP Live Streaming media in its queue. Prior to this, you had to ensure that all items in the queue were of the same type.
For apps linked against iOS 9 or later, the media interruption behavior forAV(Queue)Playerhas changed.
Before iOS 9, apps could interrupt other media-playing clients by associating or addingAVPlayerItemtoAVPlayeror by modifying the time or date of the currentAVPlayerItem(using theseekToTime:orseekToDate:methods). In iOS 9, these operations interrupt only whenAVPlayerobject’s playback rate is changed to a non-zero value through therateproperty orplaymethod.
Picture in Picture playback might stop and the Picture in Picture button might disappear when usingAVPlayerViewControllerfor video playback and replacing the underlyingAVPlayerobject’s current item usingreplaceCurrentItemWithPlayerItem:.
TheAVPictureInPictureControllerinterface and thecancelPictureInPicturemethod are deprecated.
Calendar
Fixed in Beta 3
Calendar Time to Leave alerts may not be sent.
Camera
Known Issue
You can’t take photos in the Camera app using the side volume buttons with this beta.
In this beta, FaceTime calls do not connect on iPhone 6, iPhone 6 Plus, or iPad Air 2.
Family Sharing
Known Issues
Adding a family member inline fails.
Workaround:Use invite to add family members.
Ask To Buy notifications don’t respond when tapped.
File Providers
Known Issue
On certain devices, the Document Picker is not displayed. Instead, you just see a white screen.
Foundation
Note
There is new Foundation API that can be used to detect if the device is in Low Power Mode. See the updatedEnergy Efficiency Guide for iOS Appsfor details.
Horizontal location constraints should consistently reference either left/rightorleading/trailing attributes. For apps linked against the iOS 9 SDK,NSLayoutConstraintwill throw an exception if you attempt to create a constraint between a leading/trailing attributeanda left/right attribute.
GLKit
Known Issue
GLKMeshandGLKMeshBufferobjects initialize incorrectly in this beta, which limits the use of GLKit with Model I/O.
Handoff
Known Issue
Handoff does not work with an iOS 9 device that does not have a passcode set.
HealthKit
Known Issue
In rare circumstances, it is possible for the health database to be deleted during the upgrade to the beta.
Workaround:To make sure the health database is not lost, make an encrypted iTunes backup prior to installing this beta.
Although keeping the device unlocked for the duration of the upgrade process reduces the risk of the database being destroyed, it’s recommended that you create a backup so that you can recover the database if you encounter this issue.
HomeKit
Fixed in Beta 3
Accessories that support multiple communication paths to HomeKit may appear duplicated.
Location-based event triggers do not work in Simulator.
After using HomeKit accessories or developing with the HomeKit framework, backing up to iTunes will result in an unrestorable backup.
iCloud Backup
Fixed in Beta 3
If you have two-factor authentication enabled, signing into your iTunes account while restoring from an iCloud backup may get stuck sending your verification code.
Known Issue
In rare cases, restoring from an iCloud backup will not restore your applications.
Workaround:In Settings > General > Reset, choose Erase All Contents and Settings, and then re-attempt the restore.
iCloud Drive
Fixed in Beta 3
Tapping an iCloud Drive document in search results doesn't do anything.
Instant HotSpot
Fixed in Beta 3
Some devices crash on connection to Instant Hotspot.
Keyboards
Fixed in Beta 3
There are display issues with QuickType suggestions in share sheets.
Note
Russian, Turkish, and Korean QuickType keyboards require iOS 9 beta 2 or later.
Known Issue
If you use a complex passcode on an iPad, some panes in Settings will now show the keyboard.
Keychain
Fixed in Beta 3
Under certain circumstances, when enabling iCloud keychain on an OS X El Capitan or iOS 9 system using the iCloud Security Code, you may see “incorrect security code” or “could not set up iCloud keychain” even if you’ve entered the correct security code and SMS verification code.
Known Issues
You may be unable to join an existing iCloud Keychain circle using iCloud Security Code and SMS Verification Code.
Workaround:Approve from another device.
After changing your iCloud password, you may see an “iCloud Keychain Reset” prompt.
Workaround:Re-enable iCloud Keychain.
If you have two-step verification enabled on your AppleID and then change your iCloud Keychain or iCloud Security Code on a non-trusted device, you see a “Verification Failed” error.
Workaround:Log out of iCloud, log back into the account, and enable iCloud Keychain.
If your iCloud account uses two-factor authentication, you will get a sign-in alert on all logged-in iOS 9 or OS X El Capitan devices whenever there is a change in the phone number in Settings > iCloud > Keychain > Advanced.
Localization
Fixed in Beta 3
For devices on which English is not the default language, some content may appear in English instead of the expected language.
Maps
Fixed in Beta 3
MapKit’sMKDirectionsdo not get directions or ETA responses from MapKit in this beta.
Mail
Known Issue
A Yahoo mail account may periodically display “Cannot get mail.”
Messages
Known Issues
When recording audio messages, the audio glyphs are not shown. This occurs both in quick reply and in the Messages app.
When you send an audio message, it may be difficult to begin playback.
MetalKit
Known Issue
MTKMeshandMTKMeshBufferobjects initialize incorrectly in this beta, which limits the use of MetalKit with Model I/O.
Music
Fixed in Beta 3
The Radio tab is not available in the Music app.
Note
When users plug in headphones or connect to Bluetooth or CarPlay in their car, their favorite music app appears on the lock screen or the car display.
For your app to be eligible for this, it must publish to Now Playing upon launch and consistently maintain a Now Playing state. A common practice upon launch is to continue playing the track from when the app was last exited.
Known Issues
The share sheet may not appear when sharing tracks from Apple Music.
It may not be possible to Love an album or playlist.
The New tab may not load if you are not signed into Apple Music.
The Apple Music signup screen may not display correctly.
Networking
Note
When negotiating a TLS/SSL connection with Diffie-Hellman key exchange, iOS 9 requires a 1024-bit group or larger. These connections include:
Secure Web (HTTPS)
Enterprise Wi-Fi (802.1X)
Secure e-mail (IMAP, POP, SMTP)
Printing servers (IPPS)
Phone
Known Issues
Call history may be lost upon upgrade to this beta.
Voicemail may be unavailable after an erase install.
Workaround:Reboot the device.
Photo Booth
Known Issue
Photos taken with Photo Booth are not saved.
Photos
Fixed in Beta 3
After restoring from iCloud backup, photos not stored in iCloud Photo Library fail to display thumbnails.
Podcasts
Fixed in Beta 3
If you change the media type of content in iTunes to "podcast episode," and then sync those podcasts, the Podcast app will crash on launch.
Safari
Notes
“Find on Page” is now available both from the share sheet as well as in the Completions List.
Request Desktop Site has moved; it’s now in the Share sheet instead of Favorites.
If you use Autofill on iPad, passwords may not be automatically entered into login fields.
Workaround:Manually input the text. Your passwords can be found in Settings > Safari > Passwords.
Search
Fixed in Beta 3
Tapping a Mail message, Maps favorites, Note, or Message in search results does not open the app on some devices.
When submitting an activity to be searchable withNSUserActivity, the metadata (attributeSet) does not get added to the index. Thetitleandkeywordsproperty are the only activity metadata added to the index.
Settings
Fixed in Beta 3
You may see a black screen when trying to add Google or Yahoo accounts.
CoreSpotlight items indexed with description don't display the description in Search.
Known Issues
Third-party app settings sometimes do not appear in Simulator.
In iOS 9, whenlayoutIfNeededis sent to a view and all of the following conditions are satisfied (which is not common), we apply fitting-size constraints (width/height = 0 atUILayoutPriorityFittingSizeLevel) instead of required size constraints (width/height required to match current size):
The receiver is not yet in the subtree of a view that hosts a layout engine, such as window, view controller view (unless you have settranslatesAutoresizingMaskIntoConstraintstoNOfalseon that view—or created constraints that have one item in its subtree and one item outside it), table view cell content view, and so on.
The top-level view has a subview that is not aUIViewController-owned layout guide that also hastranslatesAutoresizingMaskIntoConstraintsset toNOfalse.
Under condition 1, we create a temporary layout engine from the top-level view and add all the constraints from the subtree to it. The problem is that we need to add some constraints that make the size of the top-level view unambiguous in the layout engine. The old behavior (prior to iOS 9) was that we would add constraints to restrict the size of the top-level view to its current bounds for any situation under condition 1. This really doesn’t make sense when you add conditions 2 & 3 and can result in unsatisfiable-constraints logging and broken layout.
So on iOS 9, for this special case only, we use fitting-size constraints instead.
This means that if you are sendinglayoutIfNeededto a view under these conditions on iOS 9, you must be sure that either you have sufficient constraints to establish a size for the top-level view (which usually, though not always, is the receiver) or you must add temporary size constraints to the top-level view of layout size you desire before sendinglayoutIfNeeded, and remove them afterward.
For apps linked on iOS 9 or later,UITextViewwill now always correctly constrict itsNSTextContainerto the fit inside the view when scrolling is disabled. Overflowing lines that lie outside of anNSTextContainer, even partially, are not rendered.
In previous iOS releases, theNSTextContainersometimes was not constricted in size. This meant that logically overflowing lines were erroneously rendered. If you are seeing previously rendered lines at the end of your text view no longer rendered after linking your app against iOS 9, this behavior change is the likely cause. You can remedy this by making yourUITextViewlarger, or perhaps by adjusting the bottom value of the text view'stextContainerInsetproperty.
Apps that subclassUIPrintPageRendererorUIPrintFormatterto draw content for printing must be built with the iOS 9 SDK for the preview to display. The behavior ofUIPrintPageRendererhas been updated to calldrawPageAtIndex:inRect:multiple times with potentially different page sizes and margins. Various methods onUIPrintPageRenderermay be called from a non-main thread, but never from multiple threads concurrently.
UIPickerViewandUIDatePickerare now resizable and adaptive—previously, these views would enforce a default size even if you attempted to resize them. These views also now default to a width of 320 points on all devices, instead of to the device width on iPhone.
Interfaces that rely on the old enforcement of the default size will likely look wrong when compiled for iOS 9. Any problems encountered can be resolved by fully constraining or sizing picker views to the desired size instead of relying on implicit behavior.
Watch App
Known Issues
Pairing iOS 9 beta 3 with watchOS 2 beta 1 or 2 requires you to sign out of your AppleID in Messages prior to pairing and to skip iCloud sign-in during pairing. Pairing with watchOS 2 beta 3 and watchOS 1 is not impacted.
Tapping Cancel does not work in the iForgot work flows in Watch Setup Assistant.
Webkit
Note
Theif-domainandunless-domainvalue strings only match the exact domain. To match the domain and any subdomains, begin the string with the asterisk character (*).
이 업데이트에서는 Apple Music을 새로 선보입니다. Apple Music은 혁신적인 음악 서비스를 제공하고 글로벌 라디오를 24시간 들을 수 있으며 좋아하는 아티스트를 팔로우할 수 있는 Connect 기능을 포함합니다. 이 모든 서비스는 새롭게 디자인된 음악 App에서 즐길 수 있습니다. 그 외에 iOS 8.4는 iBooks의 향상과 오류 수정을 포함합니다. Apple Music Apple Music 구독 멤버가 되면 Apple Music 카탈로그에 있는 수백만 곡의 노래를 즐길 수 있고 오프라인 재생목록으로 보관하여 나중에 오프라인에서도 들을 수 있습니다. 추천 음악: Apple Music 멤버는 음악 전문가가 엄선한 재생목록 및 추천 앨범을 볼 수 있습니다. 새로운 음악: Apple Music 멤버에게는 최신 및 최고의 음악을 에디터가 직접 선별하여 제공합니다. 라디오: Beats 1에서 음악과 인터뷰, 독점적인 라디오 쇼를 청취할 수 있습니다. 또한 에디터가 만든 라디오 스테이션을 재생할 수도 있고 좋아하는 아티스트 또는 노래로 직접 스테이션을 만들 수도 있습니다. Connect: 팔로우하는 아티스트의 생각, 사진, 음악 및 비디오를 공유하고 대화에도 참여할 수 있습니다. 나의 음악: iTunes 구입 항목, Apple Music의 노래, 재생목록을 모두 한 곳에서 재생하고 즐깁니다. 최근 추가된 항목, 미니 플레이어, 다음에 재생할 목록 등 더 많은 기능을 추가한 전면 새로 디자인된 음악 플레이어입니다. iTunes Store: 좋아하는 음악을 구입할 수 있는 최적의 장소입니다. 한 번에 한 곡씩 또는 앨범 전체를 구입할 수 있습니다. 이용 가능한 서비스 및 기능은 국가에 따라 다를 수 있습니다. iBooks 향상 및 오류 수정 iBooks 내에서 오디오북을 검색, 청취 및 다운로드할 수 있습니다. 지금 재생 중 기능이 오디오북을 위해 특별히 새로 디자인되었습니다. iPad는 물론 iPhone에서도 이제 iBooks용으로 만들어진 도서를 사용할 수 있습니다. 시리즈 도서를 보관함에서 바로 검색하고 미리 주문할 수 있습니다. iBooks Author로 만들어진 도서에서 Widget, 용어집 및 탐색 기능의 손쉬운 사용이 향상되었습니다. 기본 설정된 중국어 서체가 새로워졌습니다. 보관함에서 자동 야간 테마 끄기 설정이 새로워졌습니다. 구입 항목 가리기의 오작동 원인을 수정했습니다. iCloud에서 책이 다운로드되지 않던 문제를 해결했습니다. 기타 향상 및 오류 수정 특정한 유니코드 문자를 받으면 기기가 재시동되던 문제 해결 GPS 액세서리가 위치 데이터를 제공할 수 없던 문제 수정 삭제된 Apple Watch App이 다시 설치되던 문제 해결 이 업데이트의 보안 콘텐츠와 관련된 자세한 정보는 다음 웹 사이트를 참조하십시오. http://support.apple.com/kb/HT1222?viewlocale=ko_KR
아이폰 OS SDK 9.0은 아이폰 OS 앱 개발에 대한 지원을 제공합니다. 그것은 이러한 도구는 엑스 코드 IDE 및 많은 다른 사람의 사이에서 악기 분석 도구를 포함 아이폰 OS 및 OS X 용 응용 프로그램을 만들기위한 엑스 코드 도구, 컴파일러 및 프레임 워크의 완전한 세트와 함께 제공된다.
이 소프트웨어를 사용하면 (아이폰 OS는 또한 9.0 OS X의 v10.10.3를 실행하는 맥 컴퓨터가 필요합니다 아이폰 OS 9. 아이폰 OS SDK를 지원 포함 된 시뮬레이터를 사용하여 응용 프로그램을 테스트 할 수 있습니다 9. 실행을 터치 요세미티를 iPhone, iPad 또는 iPod 용 응용 프로그램을 개발할 수 있습니다 ) 이상.
아이폰 OS의 버전은 애플 개발자 프로그램에 등록 된 장치 설치를위한 것입니다. 사용할 수없는 상태로 장치를 넣을 수있는 권한이없는 방식으로 아이폰 OS의 버전을 설치하려고.
해결 방법 : 사용 PKAddressFieldAll는 당신이 배송 주소 필요하거나 필요하지 않은 경우 PKAddressFieldName을 .
AVFoundation
노트
AVQueuePlayer는 이제 큐에 파일 기반 미디어 및 HTTP 라이브 스트리밍 미디어의 혼합물을 지원합니다. 이에 앞서, 당신은 큐의 모든 항목이 같은 유형이라고 확인했다.
아이폰 OS 9 이상에 링크 앱에 대한 미디어 중단 동작 AV는 (큐) 플레이어가 변경되었습니다.
아이폰 OS 9하기 전에, 애플리케이션은 관련 또는 추가하여 다른 미디어 재생 클라이언트를 중단 할 수 AVPlayerItem을 에 AVPlayer 또는 시간 또는 현재의 날짜 수정하여 AVPlayerItem를 (사용seekToTime을 : 나 : seekToDate 방법). 아이폰 OS 9시에서, 이러한 작업은 중단 AVPlayer의 오브젝트의 재생 속도를 통해 0이 아닌 값으로 변경되는 레이트 속성 또는 재생 방법.
아이폰 OS 9에서 생성 된 백업에서 복원 아이폰 OS 8 또는 이전 버전에서 생성 된 백업에서 복원하는 것보다 느립니다.
해결 방법 : 백업 및 복원 iTunes를 사용합니다.
당신은이 성공적으로 백업 한 경우 장치를 제안 잘못된 "아이 클라우드 백업"경고가 백업되지 않은 볼 수 있습니다.
해결 방법 : , 장치가 마지막 백업 시점을 결정 설정> iCloud에> 백업을하고, "마지막 백업"타임 스탬프를 볼 수 있습니다.
아이 클라우드 백업은 잘못> 설정> iCloud를> 백업에 0 바이트의 백업 크기를보고 스토리지> 스토리지> 장치를 관리합니다.
만약 당신이 두 요소 인증은 인증 코드를 전송 박히 수있는 아이 클라우드 백업에서 복원하는 동안 당신의 iTunes 계정에 로그인, 활성화.
해결 방법 : 아이 클라우드 백업에서 복원하는 동안 사용자의 iTunes 계정에 로그인하지 마십시오.
드문 경우에, 아이 클라우드 백업이 진행을,하지만 실패합니다.
해결 방법 : 백업 및 복원 iTunes를 사용합니다.
아이 클라우드 드라이브
알려진 문제
검색 결과에 아이 클라우드 드라이브 문서를 도청하는 것은 아무것도하지 않습니다.
키보드
알려진 문제
타사 키보드는 검색 결과에서 작동하지 않습니다.
타사 키보드는 애플 리케이션에서 활성 키보드의 목록에서 제거받을 수 있습니다.
해결 방법 : 키보드 설정에서 다시 키보드를 추가합니다.
키 체인
알려진 문제
아이 클라우드 체인 있도록 버디 사용시 SMS가 동일한 디바이스에 수신되는 경우, SMS 인증 코드는 자동으로 입력 할 수 없습니다.
해결 방법 : 마침 설정 지원 및 설정을 사용하여 iCloud 키 체인을 가능하게한다.
SecKeyGeneratePair은 때때로 보안 영토 (에 저장되어있는 키 생성에 실패 할 수 있습니다 kSecAttrTokenIDSecureEnclave을 ).
당신의 아이 클라우드 암호를 변경 한 후, 당신은 아이 클라우드 키 체인 재설정 프롬프트를 볼 수 있습니다.
해결 방법 : 아이 클라우드 키 체인을 사용하도록 다시.
열쇠 고리로 작성된 항목 kSecAccessControlUserPresence 액세스 제어 목록을 10 분 동안 글로벌 터치 ID 크리 덴셜을 사용한다. 아이폰이 터치 ID로 잠금이 해제되는 경우,이 항목은 터치 ID가 정보의 잠금을 해제하고 새로운 인증을 요청하지 않습니다 다시. 아이폰이 암호를 사용하여 잠금을 해제하는 경우, 항목은 터치 ID를 필요로한다.
서브 클래스 애플리케이션 UIPrintPageRenderer 또는 UIPrintFormatter는 인쇄 내용이 미리보기가 표시 할 아이폰 OS 9 SDK와 함께 구축해야합니다립니다. 의 동작 UIPrintPageRenderer는전화를 업데이트되었습니다 inRect : drawPageAtIndex을 잠재적으로 다른 페이지 크기와 여백과 여러 번. 에 다양한 방법 UIPrintPageRenderer는 하지만 결코 여러 스레드에서 동시에, 비 메인 쓰레드에서 호출 할 수있다.
UIPickerView 및 UIDatePicker은 지금 크기 조정 및 적응이다 - 이전에, 그들은 기본 크기를 적용 할 것입니다 당신이 그들을 크기를 조정하려고해도. 이러한 뷰는 지금 대신 아이폰의 장치 폭, 모든 장치에서 320 점의 폭을 기본값으로.
완전히 구속 또는 크기 선택기보기를 원하는 크기로 대신 암시 적 행동에 의존하여 아이폰 OS 9를 위해 발생하는 모든 문제가 해결 될 수 컴파일 할 때 기본 크기의 이전 시행에 의존하는 인터페이스 가능성이 잘못 볼 것이다.
iOS SDK 8.3 provides support for developing iOS apps. The SDK is packaged with a complete set of tools, compilers, and frameworks for creating apps for iOS and OS X. The 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. It now includes WatchKit, a framework for developing Apple Watch apps. You can test your apps using the included iOS Simulator.
iOS SDK 8.3 is included in Xcode 6.3, which requires a Mac computer running OS X v10.10 (Yosemite) 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.
This article summarizes the key developer-related features introduced in iOS 8, which runs on currently shipping iOS devices. The article also lists the documents that describe new features in more detail.
iOS 8 lets you extend select areas of the system by supplying an app extension, which is code that enables custom functionality within the context of a user task. For example, you might supply an app extension that helps users post content to your social sharing website. After users install and enable this extension, they can choose it when they tap the Share button in their current app. Your custom sharing extension provides the code that accepts, validates, and posts the user’s content. The system lists the extension in the sharing menu and instantiates it when the user chooses it.
In Xcode, you create an app extension by adding a preconfigured app extension target to an app. After a user installs an app that contains an extension, user enables the extension in the Settings app. When the user is running other apps, the system makes the enabled extension available in the appropriate system UI, such as the Share menu.
iOS supports app extensions for the following areas, which are known as extension points:
Share. Share content with social websites or other entities.
Action. Perform a simple task with the selected content.
Today. Provide a quick update or enable a brief task in the Today view of Notification Center.
Photo editing. Perform edits to a photo or video within the Photos app.
Storage provider. Provide a document storage location that can be accessed by other apps. Apps that use a document picker view controller can open files managed by the Storage Provider or move files into the Storage Provider.
Custom keyboard. Provide a custom keyboard that the user can choose in place of the system keyboard for all apps on the device.
Each extension point defines appropriate APIs for its purposes. When you use an app extension template to begin development, you get a default target that contains method stubs and property list settings defined by the extension point you chose.
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.
The PassKit framework adds support for payment passes and payment requests. Payment requests let users securely provide you with their payment and contact information to pay for physical goods and services. Payment passes are added to Passbook by payment networks, such as credit card issuers and banks, and let the user select their account on that payment network to fund payments.
Take better photos in your app, provide new editing capabilities to the Photos app, and create new, more efficient workflows that access the user’s photo and video assets.
Photos Framework
The Photos framework (Photos.framework) provides new APIs for working with photo and video assets, including iCloud Photos assets, that are managed by the Photos app. This framework is a more capable alternative to the Assets Library framework. Key features include a thread-safe architecture for fetching and caching thumbnails and full-sized assets, requesting changes to assets, observing changes made by other apps, and resumable editing of asset content.
Use the related Photos UI framework (PhotosUI.framework) to create app extensions for editing image and video assets in the Photos app. For more information, see App Extension Programming Guide.
Manual Camera Controls
The AV Foundation framework (AVFoundation.framework) makes it easier than ever to take great photos. Your app can take direct control over the camera focus, white balance, and exposure settings. In addition, your app can use bracketed exposure captures to automatically capture images with different exposure settings.
A new property (autoFocusSystem) can be used to determine how the camera performs auto focusing.
Games
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.
Metal
Metal provides extremely low-overhead access to the A7 and A8 GPUs, enabling extremely high performance for your sophisticated graphics rendering and computational tasks. Metal eliminates many performance bottlenecks—such as costly state validation—that are found in traditional graphics APIs. Metal is explicitly designed to move all expensive state translation and compilation operations out of the critical path of your most performance sensitive rendering code. Metal provides precompiled shaders, state objects, and explicit command scheduling to ensure your application achieves the highest possible performance and efficiency for your GPU graphics and compute tasks. This design philosophy extends to the tools used to build your app. When your app is built, Xcode compiles Metal shaders in the project into a default library, eliminating most of the runtime cost of preparing those shaders.
Graphics, compute, and blit commands are designed to be used together seamlessly and efficiently. Metal is specifically designed to exploit modern architectural considerations, such as multiprocessing and shared memory, to make it easy to parallelize the creation of GPU commands.
With Metal, you have a streamlined API, a unified graphics and compute shading language, and Xcode-based tools, so you don’t need to learn multiple frameworks, languages, and tools to take full advantage of the GPU in your game or app.
SceneKit is an Objective-C framework for building simple games and rich app user interfaces with 3D graphics, combining a high-performance rendering engine with a high-level, descriptive API. SceneKit has been available since OS X v10.8 and is now available in iOS for the first time. Lower-level APIs (such as OpenGL ES) require you to implement the rendering algorithms that display a scene in precise detail. By contrast, SceneKit lets you 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. Add high-level behaviors that make it easy to use wheeled vehicles such as cars in a scene, and add physics fields that apply radial gravity, electromagnetism, or turbulence to objects within an area of effect.
Use OpenGL ES to render additional content into a scene, or provide GLSL shaders that replace or augment SceneKit’s rendering. You can also add shader-based postprocessing techniques to SceneKit’s rendering, such as color grading or screen space ambient occlusion.
The SpriteKit framework (SpriteKit.framework) adds new features to make it easier to support advanced game effects. These features include support for custom OpenGL ES shaders and lighting, integration with SceneKit, and advanced new physics effects and animations. For example, you can create physics fields to simulate gravity, drag, and electromagnetic forces using the SKFieldNode class. You can easily create physics bodies with per-pixel collision masks. And it is easier than ever to pin a physics body to its parent, even if its parent does not have a physics body of its own. These new physics features make complex simulations much easier to implement.
Use constraints to modify the effects of physics and animations on the content of your scene—for example, you can make one node always point toward another node regardless of where the two nodes move.
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.
AVFoundation framework (AVFoundation.framework) adds support for a broad cross-section of audio functionality at a higher level of abstraction than Core Audio. These new audio capabilities are available on both OS X and iOS and include automatic access to audio input and output hardware, audio recording and playback, and audio file parsing and conversion. You also gain access to audio units for generating special effects and filters, pitch and playback speed management, stereo and 3D audio environments, and MIDI instruments.
The APPLE_color_buffer_packed_float extension builds on APPLE_texture_packed_float so that the new texture formats can be used by a framebuffer object. This means that an app can render into a framebuffer that uses one of these formats.
HealthKit Framework
HealthKit (HealthKit.framework) is a new framework for managing a user’s health-related information. With the proliferation of apps and devices for tracking health and fitness information, it's difficult for users to get a clear picture of how they are doing. HealthKit makes it easy for apps to share health-related information, whether that information comes from devices connected to an iOS device or is entered manually by the user. The user’s health information is stored in a centralized and secure location. The user can then see all of that data displayed in the Health app.
When your app implements support for HealthKit, it gets access to health-related information for the user and can provide information about the user, without needing to implement support for specific fitness-tracking devices. The user decides which data should be shared with your app. Once data is shared with your app, your app can register to be notified when that data changes; you have fine-grained control over when your app is notified. For example, request that your app be notified whenever users takes their blood pressure, or be notified only when a measurement shows that the user’s blood pressure is too high.
HomeKit Framework
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.
iCloud includes some changes that affect the behavior of existing apps and that affect users of those apps.
Document-Related Data Migration
The iCloud infrastructure is more robust and reliable when documents and data are transferred between user devices and the server. When a user installs iOS 8 and logs into the device with an iCloud account, the iCloud server performs a one-time migration of the documents and data in that user’s account. This migration involves copying the documents and data to a new version of the app’s container directory. The new container is accessible only to devices running iOS 8 or OS X v10.10. Devices running older operating systems can continue to access to the original container, but changes made in that container do not appear in the new container and changes made in the new container do not appear in the original container.
CloudKit
CloudKit (CloudKit.framework) is a conduit for moving data between your app and iCloud. Unlike other iCloud technologies where data transfers happen transparently, CloudKit gives you control over when transfers occur. You can use CloudKit to manage all types of data.
Apps that use CloudKit directly can store data in a repository that is shared by all users. This public repository is tied to the app itself and is available even on devices without a registered iCloud account. As the app developer, you can manage the data in this container directly and see any changes made by users through the CloudKit dashboard.
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.
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.
Apps linked against iOS 8 and later should be prepared to support the larger screen size of iPhone 6 and iPhone 6 Plus. On the iPhone 6 Plus, apps should also be prepared to support a new screen scale. In particular, apps that support OpenGL ES and Metal can also choose to size their rendering CAEAGLLayeror CAMetalLayer to get the best possible performance on the iPhone 6 Plus.
To let the system know that your app supports the iPhone 6 screen sizes, include a storyboard launch screen file in your app’s bundle. At runtime, the system looks for a storyboard launch screen file. If such an file is present, the system assumes that your app supports the iPhone 6 and 6 Plus explicitly and runs it in fullscreen mode. If such an image is not present, the system reports a smaller screen size (either 320 by 480 points or 320 by 568 points) so that your app’s screen-based calculations continue to be correct. The contents are then scaled to fit the larger screen.
iOS 8 adds new features that make dealing with screen size and orientation much more versatile. It is easier than ever to create a single interface for your app that works well on both iPad and iPhone, adjusting to orientation changes and different screen sizes as needed. Using size classes, you can retrieve general information about the size of a device in its current orientation. You can use this information to make initial assumptions about which content should be displayed and how those interface elements are related to each other. Then, use Auto Layout to resize and reposition these elements to fit the actual size of the area provided. Xcode 6 uses size classes and autolayout to create storyboards that adapt automatically to size class changes and different screen sizes.
Traits Describe the Size Class and Scale of an Interface
Size classes are traits assigned to a user interface element, such as a screen or a view. There are two types of size classes in iOS 8: regular and compact. A regular size class denotes either a large amount of screen space, such as on an iPad, or a commonly adopted paradigm that provides the illusion of a large amount of screen space, such as scrolling on an iPhone. Every device is defined by a size class, both vertically and horizontally.
Figure 1 and Figure 2 show the native size classes for the iPad. With the amount of screen space available, the iPad has a regular size class in the vertical and horizontal directions in both portrait and landscape orientations.
Figure 1 iPad size classes in portraitFigure 2 iPad size classes in landscape
The size classes for iPhones differ based on the kind of device and its orientation. In portrait, the screen has a compact size class horizontally and a regular size class vertically. This corresponds to the common usage paradigm of scrolling vertically for more information. When iPhones are in landscape, their size classes vary. Most iPhones have a compact size class both horizontally and vertically, as shown in Figure 3 and Figure 4. The iPhone 6 Plus has a screen large enough to support regular width in landscape mode, as shown in Figure 5.
Figure 3 iPhone size classes in portraitFigure 4 iPhone size classes in landscapeFigure 5 iPhone 6 Plus classes in landscape
You can change the size classes associated with a view. This flexibility is especially useful when a smaller view is contained within a larger view. Use the default size classes to arrange the user interface of the larger view and arrange information in the subview based on whatever size classes you feel is most appropriate to that subview.
To support size classes, the following classes are new or modified:
The UITraitCollection class 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. Classes that support the UITraitEnvironment protocol (such as UIScreen, UIViewController and UIView) own a trait collection. You can retrieve an object’s trait collection and perform actions when those traits change.
The UIImageAsset class is used to group like images together based on their traits. Combine similar images with slightly different traits into a single asset and then automatically retrieve the correct image for a particular trait collection from the image asset. The UIImage class has been modified to work with image assets.
Classes that support the UIAppearance protocol can customize an object’s appearance based on its trait collection.
The UIViewController class adds the ability to retrieve the trait collection for a child view. You can also lay out the view by changing the size class change through the viewWillTransitionToSize:withTransitionCoordinator: method.
Xcode 6 supports unified storyboards. A storyboard can add or remove views and layout constraints based on the size class that the view controller is displayed in. Rather than maintaining two separate (but similar) storyboards, you can make a single storyboard for multiple size classes. First, design your storyboard with a common interface and then customize it for different size classes, adapting the interface to the strengths of each form factor. Use Xcode 6 to test your app in a variety of size classes and screen sizes to make sure that your interface adapts to the new sizes properly.
Supporting New Screen Scales
The iPhone 6 Plus uses a new Retina HD display with a very high DPI screen. To support this resolution, iPhone 6 Plus creates a UIScreen object with a screen size of 414 x 736 points and a screen scale of 3.0 (1242 x 2208 pixels). After the contents of the screen are rendered, UIKit samples this content down to fit the actual screen dimensions of 1080 x 1920. To support this rendering behavior, include new artwork designed for the new 3x screen scale. In Xcode 6, asset catalogs can include images at 1x, 2x, and 3x sizes; simply add the new image assets and iOS will choose the correct assets when running on an iPhone 6 Plus. The image loading behavior in iOS also recognizes an @3x suffix.
In a graphics app that uses Metal or OpenGL ES, content can be easily rendered at the precise dimensions of the display without requiring an additional sampling stage. This is critical in high-performance 3D apps that perform many calculations for each rendered pixel. Instead, create buffers to render into that are the exact resolution of the display.
A UIScreen object provides a new property (nativeScale) that provides the native screen scale factor for the screen. When the nativeScale property has the same value as the screen’sscale property, then the rendered pixel dimensions are the same as the screen’s native pixel dimensions. When the two values differ, then you can expect the contents to be sampled before they are displayed.
If you are writing an OpenGL ES app, a GLKView object automatically creates its renderbuffer objects based on the view’s size and the value of itscontentScaleFactor property. After the view has been added to a window, set the view’s contentScaleFactor to the value stored in the screen’snativeScale property, as shown in Listing 1.
Listing 1 Supporting native scale in a GLKView object
In a Metal app, your own view class should have code similar to the code found in Listing 1. In addition, whenever your view’s size changes, and prior to asking the Metal layer for a new drawable, calculate and set the metal layer’s drawableSize property as shown in Listing 2. (An OpenGL ES app that is creating its own renderbuffers would use a similar calculation.)
Listing 2 Adjusting the size of a Metal layer to match the native screen scale
CGSize drawableSize = self.bounds.size;
drawableSize.width *= self.contentScaleFactor;
drawableSize.height *= self.contentScaleFactor;
metalLayer.drawableSize = drawableSize;
See MetalBasic3D for a working example. The Xcode templates for OpenGL ES and Metal also demonstrate these same techniques.
Additional Framework Changes
In addition to the major changes described above, iOS 8 includes other improvements.
API Modernization
Many frameworks on iOS have adopted small interface changes that take advantage of modern Objective-C syntax:
Getter and setter methods are replaced by properties in most classes. Code using the existing getter and setter methods continues to work with this change.
Initialization methods are updated to have a return value of instancetype instead of id.
Designated initializers are declared as such where appropriate.
In most cases, these changes do not require any additional work in your own app. However, you may also want to implement these changes in your own Objective-C code. In particular, you may want to modernize your Objective-C code for the best experience when interoperating with Swift code.
The AV Foundation framework (AVFoundation.framework) enables you to capture metadata over time while shooting video. Arbitrary types of metadata can be embedded with a video recording at various points in time. For example, you might record the current physical location in a video created by a moving camera device.
The AVKit framework (AVKit.framework) previously introduced on OS X is available on iOS. Use it instead of Media Player framework when you need to display a video.
CoreAudioKit Framework
The new CoreAudioKit framework simplifies the effort required to create user interfaces for apps that take advantage of inter-app audio.
Core Image Framework
The Core Image framework (CoreImage.framework) has the following changes:
You can create custom image kernels in iOS.
Core image detectors can detect rectangles and QR codes in an image.
The Core Location framework (CoreLocation.framework) has the following changes:
You can determine which floor the device is on, if the device is in a multistory building.
The visit service provides an alternative to the significant location change service for apps that need location information about interesting places visited by the user.
Core Motion provides two new classes (CMAltimeter and CMAltitudeData) which allow you to access the barometer on the iPhone 6 and iPhone 6 Plus. On these two devices, you can also use a CMMotionActivity object to determine whether the user is on a bicycle.
Foundation Framework
The Foundation framework (Foundation.framework) includes the following enhancements:
The NSFileVersion class provides access to past versions of iCloud documents. These versions are stored in iCloud, but can be downloaded on request.
The NSURL class supports storing document thumbnails as metadata.
The NSMetadataQuery class can search for external iCloud documents that your app has opened.
Game Controller Framework
The Game Controller framework (GameController.framework) has the following changes:
If the controller is attached to a device, you can now receive device motion data directly from the Game Controller framework.
If you are working with button inputs and do not care about pressure sensitivity, a new handler can call your game only when the button’s pressed state changes.
GameKit Framework
The GameKit framework (GameKit.framework) has the following changes:
Features that were added in iOS 7 are available on OS X 10.10, making it easier to use these features in a cross-platform game.
The new GKSavedGame class and new methods in GKLocalPlayer make it easy to save and restore a user’s progress. The data is stored on iCloud; GameKit does the necessary work to synchronize the files between the device and iCloud.
Methods and properties that use player identifier strings are now deprecated. Instead, use GKPlayer objects to identify players. Replacement properties and methods have been added that take GKPlayer objects.
iAd Framework
The iAd framework (iAd.framework) adds the following new features:
If you are using AV Kit to play a video, you can play preroll advertisements before the video is played.
You can look up more information about the the effectiveness of advertisements for your app.
SKSpriteNode objects can provide lighting information so that SpriteKit automatically generates lighting effects and shadows. Add SKLightNodeobjects to the scene to specify the lights, and then customize the properties on these lights and any sprites to determine how the scene is lit.
The SKFieldNode class provides physics special effects you can apply to a scene. For example, create magnetic fields, add drag effects, or even generate randomized motion. All effects are constrained to a specific region of the scene, and you can carefully tune both the effect’s strength and how quickly the effect is weakened by distance. Field nodes make it easy to drop in an effect without having to search the entire list of physics bodies and apply forces to them.
A new SK3DNode class is used to integrate a SceneKit scene into your game as a sprite. Each time that SpriteKit renders your scene, it renders the 3D scene node first to generate a texture, then uses that texture to render a sprite in SpriteKit. Creating 3D sprites can help you avoid creating dozens of frames of animation to produce an effect.
New actions have been added, including support for inverse kinematic animations.
A new system of constraints has been added to scene processing. SpriteKit applies constraints after physics is simulated, and you use them to specify a set of rules for how a node is positioned and oriented. For example, you can use a constraint to specify that a particular node in the scene always points at another node in the scene. Constraints make it easier to implement rendering rules in your game without having to tweak the scene manually in your event loop.
A scene can implement all of the run-loop stages in a delegate instead of subclassing the SKScene class. Using a delegate often means that you can avoid needing to subclass the SKScene class.
The SKView class provides more debugging information. You can also provide more performance hints to the renderer.
You can create normal map textures for use in lighting and physics calculations (or inside your own custom shaders). Use the new SKMutableTextureclass when you need to create textures whose contents are dynamically updated.
You can generate texture atlases dynamically at runtime from a collection of textures.
Xcode 6 also incorporates many new SpriteKit editors. Create or edit the contents of scenes directly, specifying the nodes that appear in the scene as well as their physics bodies and other characteristics. The scene is serialized to a file and can be loaded directly by your game. The editors save you time because often you don’t need to implement your own custom editors to create your game’s assets.
The UIKit framework (UIKit.framework) includes the following enhancements:
Apps that use local or push notifications must explicitly register the types of alerts that they display to users by using a UIUserNotificationSettingsobject. This registration process is separate from the process for registering remote notifications, and users must grant permission to deliver notifications through the requested options.
Local and push notifications can include custom actions as part of an alert. Custom actions appear as buttons in the alert. When tapped, your app is notified and asked to perform the corresponding action. Local notifications can also be triggered by interactions with Core Location regions.
Collection views support dynamically changing the size of cells. Typically, you use this support to accommodate changes to the preferred text size, but you can adapt it for other scenarios too. Collection views also support more options for invalidating different portions of the layout and thereby improving performance.
The UISearchController class replaces the UISearchDisplayController class for managing the display of search-related interfaces.
The UISplitViewController class is now supported on iPhone as well as iPad. The class adjusts its presented interface to adapt to the available space. The class also changes the way it shows and hides the primary view controller, giving you more control over how to display the split view interface.
The UINavigationController class has new options for changing the size of the navigation bar or hiding it altogether.
The new UIVisualEffect class enables you to integrate custom blur effects into your view hierarchies.
The new UIPresentationController class lets you separate the content of your view controllers from the chrome used to display them.
The new UIPopoverPresentationController class handles the presentation of content in a popover. The existing UIPopoverController class uses the popover presentation controller to show popovers on the screen.
The new UIPrinterPickerController class offers a view controller-based way to display a list of printers and to select one to use during printing. Printers are represented by instances of the new UIPrinter class.
The Video Toolbox framework (VideoToolbox.framework) includes direct access to hardware video encoding and decoding.
Webkit Framework
A number of new classes have been added to make it easier to create high-performance native apps that utilize web content. See WebKit Framework Reference.
Deprecated APIs
The following APIs are deprecated:
The UIApplication methods and properties for registering notifications. Use the new API instead.
The UIViewController methods and properties for interface orientation. Traits and size classes replace them, as described in Unified Storyboards for Universal Apps. There are other smaller changes to UIKit API to support size classes; often older interfaces that used specific device idioms have been replaced.
iOS SDK 8.0 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.0 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.
A restoration of an iCloud backup onto the same device the backup was taken from may not work properly. As a result, some apps may crash.
Known Issues
Encrypted backups to iTunes fail.
iOS 7 iCloud backups restored to an iOS 8 beta device may not properly restore photos.
CarPlay
Fixed in beta 5
The Now Playing screen is missing the Back button in the top-left corner.
CloudKit
Fixed in beta 5
Clients sending multiple simultaneous record update requests to the same zone in the private database may encounter CKErrorZoneBusy errors.
Workaround: Clients should send update requests for a given zone one at a time. In addition, they should handle CKErrorZoneBusy errors by retrying with an exponential backoff.
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.
As of iOS 8 beta 2, you must use the new mode. The old mode has been deprecated.
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:
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.
Handoff
Note
Handoff is incompatible between devices using this beta and the prior beta. You should test Handoff with the most recent beta software because it is not backward-compatible with previous betas.
HealthKit
Notes
Spirometry data types are now available in HealthKit.
Any blood type that was set in Medical ID prior to beta 3 will be cleared.
The pairing UI for BTLE health devices has been removed from HealthKit and is now available in Settings > Bluetooth.
The HKWorkout API is now available to store workouts.
HKQuantityTypeIdentifierGalvanicSkinResponse has been renamed HKQuantityTypeIdentifierElectrodermalActivity.
The following HKObjectType identifiers have been removed:
HKQuantityTypeIdentifierRRInterval
HKQuantityTypeIdentifierHeatFlux
HKCorrelationTypeIdentifierHeartRateReading
HomeKit
Note
After upgrading to beta 5, you need to 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.
Known Issue
Siri may not immediately recognize HomeKit data changes.
Workaround: To trigger an update to Siri, edit other data used by Siri such as a contact or the name of a Reminders list.
iAd
Fixed in beta 5
iAd videos may not play in NPR HLS station.
iCloud Drive
Notes
iCloud Documents & Data created with iOS 8 Beta will be deleted from the servers at some point during this beta period. Information downloaded and not evicted from the device will remain on device and will re-sync after the data wipe occurs.
Document storage containers created using the UIDocument class in iOS 7 are not yet available for use with iCloud Documents through Xcode 6 beta or in the Certificates, Identifiers & Profiles section of Member Center. These containers will be migrated later and associated with your existing App IDs.
URLForUbiquityContainerIdentifier: might return nil when running your application in Xcode. If so, open System Preferences, navigate to iCloud > iCloud Drive, and enable Xcode.
Migrating to iCloud Drive will disable Documents & Data syncing for your iCloud account on iOS 7 and earlier devices, as well as OS X Mavericks and earlier Macs.
iCloud Keychain
Fixed in beta 5
Initial sync does not work if the approving device is locked when the approval occurs.
Using the recovery option can leave you in a state where new items added to the keychain do not sync.
Known Issue
Upon logging into a device with the iCloud 8 beta, other devices in your keychain circle may have their access to the circle revoked.
Workaround: Enable iCloud Keychain Sync on your other devices again.
iTunes Sync
Known Issue
Apps do not sync from a device to iTunes.
Keyboards
Fixed in beta 5
If you turn off predictive text in one app and then turn it back on in another, it may not actually be reactivated.
Caps Lock may be unexpectedly enabled in text input fields.
Localization
Fixed in beta 5
The following have English strings that are now properly localized in other languages:
VoiceOverTouch
Sharing
ManagedConfiguration
AirPortAssistant
MapKit
SpringboardUIServices
AccessibilityBundles
Music
Maps
Known Issue
When viewed in the Simulator, the "Hybrid" view in Maps and MapKit apps does not show all of the tiles.
Metal and OpenGL
Fixed in beta 5
Shadow samplers are broken when using linear filtering.
Workaround: For OpenGL, set GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER to GL_NEAREST. For Metal, set the mag_filter and min_filter sampler properties to nearest in the shader source.
Music
Fixed in beta 5
The Music app may stop responding when downloading an album.
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 appropriate NCUpdateResult. 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
Beginning in iOS 8 beta 2, 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
iCloud Photo Library requires beta 3 or later.
Back up your photo libraries before enabling iCloud Photo Library by:
Importing to your Mac using iPhoto
Importing to your Mac using Image Capture
Enabling iCloud Photo Library will not add photos/videos that have been synced with iTunes to the cloud.
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 not enabled in this beta.
When using iCloud Family, both iCloud Photos and My Photostream are enabled.
After restore from iCloud backup, modified photos may show unmodified thumbnails.
If you reach your iCloud quota, there is no way to add or delete data within the Photos app.
Quicklook
Known Issue
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 on the bookmarks button.
Settings
Known Issue
Some icons are missing in Settings and only appear after the row is tapped.
Setup
Known Issue
Updating the iCloud settings screen may appear to hang during setup.
Workaround: Some accounts may have an extra long lag. Wait a couple of minutes and they should complete.
Siri
Known Issue
Calling contacts with Siri is supported only on devices with the latest developer seed build. Prior developer seed builds no longer support this feature.
Springboard
Fixed in beta 5
Some projects may launch in portrait when the destination device is in landscape.
Workaround: Rotate the device to portrait and back to landscape to continue in landscape.
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 for clipsToBounds. This differs from the normal UIView default of NO.
leftLayoutGuide and rightLayoutGuide API have been removed. Please use the layoutMargins property instead.
Fixed in beta 5
When the width of a multiline label changes due to changes in the layoutMargins of some view, the intrinsic content size of the label is not invalidated when it should be. As a result the layout can unexpectedly truncate the label (or text view).
To use an action sheet-style UIAlertController on iPad, the sourceView of the alert controller's popoverPresentationController must be set.
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.
In iOS 8.0 beta 2 and later, CSS object model getters (offset{Left|Top|Width|Height} and client{Left|Top|Width|Height}) return fractional double values based on subpixel metrics instead of rounded integral values.
The minimal-ui viewport property is no longer supported in iOS 8.
Known Issue
The window.outerWidth and window.outerHeight DOM properties always return 0. Other DOM properties will need to be used instead. This may affect websites that use leaf.js.
This article summarizes the key developer-related features introduced in iOS 8, which runs on currently shipping iOS devices. The article also lists the documents that describe new features in more detail.
For late-breaking news and information about known issues, see iOS 8 Release Notes. For the complete list of new APIs added in iOS 8, see iOS 8.0 API Diffs.
App Extensions
iOS 8 lets you extend select areas of the system by supplying an app extension, which is code that enables custom functionality within the context of a user task. For example, you might supply an app extension that helps users post content to your social sharing website. After users install and enable this extension, they can choose it when they tap the Share button in their current app. Your custom sharing extension provides the code that accepts, validates, and posts the user’s content. The system lists the extension in the sharing menu and instantiates it when the user chooses it.
In Xcode, you create an app extension by adding a preconfigured app extension target to an app. After a user installs an app that contains an extension, the extension is enabled by the user in the Settings app. When the user is running other apps, the system makes the enabled extension available in the appropriate system UI, such as the Share menu.
iOS supports app extensions for the following areas, which are known as extension points:
Share. Share content with social websites or other entities.
Action. Perform a simple task with the selected content.
Today. Provide a quick update or enable a brief task in the Today view of Notification Center.
Photo editing. Perform edits to a photo or video within the Photos app.
Storage provider. Provide a document storage location that can be accessed by other apps. Apps that use a document picker view controller can open files managed by the Storage Provider or move files into the Storage Provider.
Custom keyboard. Provide a custom keyboard that the user can choose in place of the system keyboard for all apps on the device.
Each extension point defines appropriate APIs for its purposes. When you use an app extension template to begin development, you get a default target that contains method stubs and property list settings defined by the extension point you chose.
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.
Take better photos in your app, provide new editing capabilities to the Photos app, and create new, more efficient workflows that access the user’s photo and video assets.
Photos Framework
The Photos framework (Photos.framework) provides new APIs for working with photo and video assets, including iCloud Photos assets, that are managed by the Photos app. This framework is a more capable alternative to the Assets Library framework. Key features include a thread-safe architecture for fetching and caching thumbnails and full-sized assets, requesting changes to assets, observing changes made by other apps, and resumable editing of asset content.
Use the related Photos UI framework (PhotosUI.framework) to create app extensions for editing image and video assets in the Photos app. For more information, see App Extension Programming Guide.
Manual Camera Controls
The AV Foundation framework (AVFoundation.framework) makes it easier than ever to take great photos. Your app can take direct control over the camera focus, white balance, and exposure settings. In addition, your app can use bracketed exposure captures to automatically capture images with different exposure settings.
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.
Metal
Metal provides extremely low-overhead access to the A7 GPU enabling incredibly high performance for your sophisticated graphics rendering and computational tasks. Metal eliminates many performance bottlenecks—such as costly state validation—that are found in traditional graphics APIs. Metal is explicitly designed to move all expensive state translation and compilation operations out of the critical path of your most performance sensitive rendering code. Metal provides precompiled shaders, state objects, and explicit command scheduling to ensure your application achieves the highest possible performance and efficiency for your GPU graphics and compute tasks. This design philosophy extends to the tools used to build your app. When your app is built, Xcode compiles Metal shaders in the project into a default library, eliminating most of the runtime cost of preparing those shaders.
Graphics, compute, and blit commands are designed to be used together seamlessly and efficiently. Metal is specifically designed to exploit modern architectural considerations, such as multiprocessing and shared memory, to make it easy to parallelize the creation of GPU commands.
With Metal, you have a streamlined API, a unified graphics and compute shading language, and Xcode-based tools, so you don’t need to learn multiple frameworks, languages and tools to take full advantage of the GPU in your game or app.
Scene Kit is an Objective-C framework for building simple games and rich app user interfaces with 3D graphics, combining a high-performance rendering engine with a high-level, descriptive API. Scene Kit has been available since OS X v10.8 and is now available in iOS for the first time. Lower-level APIs (such as OpenGL ES) require you to implement the rendering algorithms that display a scene in precise detail. By contrast, Scene Kit lets you describe your scene in terms of its content—geometry, materials, lights, and cameras—then animate it by describing changes to those objects.
Scene Kit’s 3D physics engine enlivens your app or game by simulating gravity, forces, rigid body collisions, and joints. Add high-level behaviors that make it easy to use wheeled vehicles such as cars in a scene, and add physics fields that apply radial gravity, electromagnetism, or turbulence to objects within an area of effect.
Use OpenGL ES to render additional content into a scene, or provide GLSL shaders that replace or augment Scene Kit’s rendering. You can also add shader-based post-processing techniques to Scene Kit’s rendering, such as color grading or screen space ambient occlusion.
The Sprite Kit framework (SpriteKit.framework) adds new features to make it easier to support advanced game effects. These features include support for custom OpenGL ES shaders and lighting, integration with Scene Kit, and advanced new physics effects and animations. For example, you can create physics fields to simulate gravity, drag, and electromagnetic forces using the SKFieldNode class. Physics bodies can now easily be created with per-pixel collision masks. And it is easier than ever to pin a physics body to its parent, even if its parent does not have a physics body of its own. These new physics features make complex simulations much easier to implement.
Use constraints to modify the effects of physics and animations on the content of your scene—for example, you can make one node always point toward another node regardless of where the two nodes move.
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.
AV Foundation framework (AVFoundation.framework) adds support for a broad cross-section of audio functionality at a higher level of abstraction than Core Audio. These new audio capabilities are available on both OS X and iOS and include automatic access to audio input and output hardware, audio recording and playback, and audio file parsing and conversion. You also gain access to audio units for generating special effects and filters, pitch and playback speed management, stereo and 3D audio environments, and MIDI instruments.
Health Kit (HealthKit.framework) is a new framework for managing a user’s health-related information. With the proliferation of apps and devices for tracking health and fitness information, it's difficult for users to get a clear picture of how they are doing. Health Kit makes it easy for apps to share health-related information, whether that information comes from devices connected to an iOS device or is entered manually by the user. The user’s health information is stored in a centralized and secure location. The user can then see all of that data displayed in the Health app.
When your app implements support for Health Kit, it gets access to health-related information for the user and can provide information about the user, without needing to implement support for specific fitness-tracking devices. The user decides which data should be shared with your app. Once data is shared with your app, your app can register to be notified when that data changes; you have fine-grained control over when your app is notified. For example, you could request that your app be notified whenever the user takes his or her blood pressure, or be notified only when a measurement shows that the user’s blood pressure is too high.
Home Kit Framework
Home Kit (HomeKit.framework) is a new framework for communicating with and controlling connected devices in a user’s home. New devices being introduced for the home are offering more connectivity and a better user experience. Home Kit provides a standardized way to communicate with those devices.
Your app can use Home Kit 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 Home Kit Accessory Simulator to test the communication of your Home Kit app with a device.
iCloud includes some changes that impact the behavior of existing apps and that will affect users of those apps.
Document-Related Data Migration
The iCloud infrastructure is more robust and reliable when documents and data are transferred between user devices and the server. When a user installs iOS 8 and logs into the device with an iCloud account, the iCloud server performs a one-time migration of the documents and data in that user’s account. This migration involves copying the documents and data to a new version of the app’s container directory. This new container is accessible only to devices running iOS 8 or OS X v10.10. Devices running older operating systems will continue to have access to the original container, but changes made in that container will not appear in the new container and vice versa.
Cloud Kit
Cloud Kit (CloudKit.framework) provides a conduit for moving data between your app and iCloud. Unlike other iCloud technologies where data transfers happen transparently, Cloud Kit gives you control over when transfers occur. You can use Cloud Kit to manage all types of data.
Apps that use Cloud Kit directly can to store data in a repository that is shared by all users. This public repository is tied to the app itself and is available even on devices without a registered iCloud account. As the app developer, you can manage the data in this container directly and see any changes made by users through the Cloud Kit dashboard.
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.
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 into 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.
iOS 8 makes dealing with screen size and orientation much more versatile. It is easier than ever to create a single interface for your app that works well on both iPad and iPhone, adjusting to orientation changes and different screen sizes as needed. Design apps with a common interface and then customize them for different size classes. Adapt your user interface to the strengths of each form factor. You no longer need to create a specific iPad storyboard; instead target the appropriate size classes and tune your interface for the best experience.
There are two types of size classes in iOS 8: regular and compact. A regular size class denotes either a large amount of screen space, such as on an iPad, or a commonly adopted paradigm that provides the illusion of a large amount of screen space, such as scrolling on an iPhone. Every device is defined by a size class, both vertically and horizontally. iPad size classes shows the native size classes for the iPad. With the amount of screen space available, the iPad has a regular size class in the vertical and horizontal directions in both portrait and landscape orientations.
Figure 1 iPad size classes in portraitFigure 2 iPad size classes in landscape
The iPhone has different size classes based on the orientation of the device. In portrait, the screen has a compact size class horizontally and a regular size class vertically. This corresponds to the common usage paradigm of scrolling vertically for more information. When the device is in landscape, it has a compact size class both horizontally and vertically. iPhone size classes shows the native classes for the iPhone.
Figure 3 iPhone size classes in portraitFigure 4 iPhone size classes in landscape
Every view has a size class associated with it that you can change. This flexibility is especially useful when a smaller view is contained within a larger view. You can use the default size classes to arrange the user interface of the larger view and arrange information in the subview based on a different size class combination.
To support size classes, the following classes are new or modified:
The UITraitCollection class 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. Classes that support the UITraitEnvironment protocol (such as UIViewController and UIView) own a trait collection. You can retrieve an object’s trait collection and perform actions when those traits change.
The UIImageAsset class is used to group like images together based on their traits. Combine similar images with slightly different traits into a single asset and then automatically retrieve the correct image for a particular trait collection from the image asset. The UIImage class has been modified to work with image assets.
Classes that support the UIAppearance protocol can customize an object’s appearance based on its trait collection.
The UIViewController class adds the ability to retrieve the trait collection for a child view. You can also lay out the view by changing the size class change through the viewWillTransitionToSize:withTransitionCoordinator: method.
Xcode 6 supports unified storyboards. Add or remove views and layout constraints based on the size class that the view controller is displayed in. Use Xcode 6 to test your app in a variety of size classes and screen sizes, making it easier than ever to design interfaces that adapt to the conditions under which they are running. Rather than maintaining two separate (but similar) storyboards, you can make a single storyboard for multiple size classes.
Additional Framework Changes
In addition to the major changes described above, iOS 8 includes other improvements.
API Modernization
Many frameworks on iOS have adopted small interface changes that take advantage of modern Objective-C syntax:
Getter and setter methods are replaced by properties in most classes. Code using the existing getter and setter methods should continue to work with this change.
Initialization methods are updated to have a return value of instancetype instead of id.
Designated initializers are declared as such where appropriate.
In most cases, these changes do not require any additional work in your own app. However, you may also want to implement these changes in your own Objective-C code. In particular, you may want to modernize your Objective-C code for the best experience when interoperating with Swift code.
The AV Foundation framework (AVFoundation.framework) enables you to capture metadata over time while shooting video. Arbitrary types of metadata can be embedded with a video recording at various points in time. For example, you might record the current physical location in a video created by a moving camera device.
The AV Kit framework (AVKit.framework) previously introduced on OS X is available on iOS. Use it instead of Media Player framework when you need to display a video.
Core Image Framework
The Core Image framework (CoreImage.framework) has the following changes:
You can create custom image kernels in iOS.
Core image detectors can detect rectangles and QR codes in an image.
The Core Location framework (CoreLocation.framework) has the following changes:
You can determine which floor the device is on, if the device is in a multistory building.
The visit service provides an alternative to the significant location change service for apps that need location information about interesting places visited by the user.
The Foundation framework (Foundation.framework) includes the following enhancements:
The NSFileVersion class provides access to past versions of iCloud documents. These versions are stored in iCloud, but can be downloaded on request.
The NSURL class supports storing document thumbnails as metadata.
The NSMetadataQuery class can search for external iCloud documents that your app has opened.
Game Controller Framework
The Game Controller framework (GameController.framework) has the following changes:
If the controller is attached to a device, you can now receive device motion data directly from the Game Controller framework.
If you are working with button inputs and do not care about pressure sensitivity, a new handler can call your game only when the button’s pressed state changes.
Game Kit Framework
The Game Kit framework (GameKit.framework) has the following changes:
Features that were added in iOS 7 are available on OS X 10.10, making it easier to use these features in a cross-platform game.
The new GKSavedGame class makes it easy to save and restore a user’s progress. The data is stored on iCloud; Game Kit does the necessary work to synchronize the files between the device and iCloud.
Methods and properties that use player identifier strings are now deprecated. Instead, use GKPlayer objects to identify players. Replacement properties and methods have been added that take GKPlayer objects.
iAd Framework
The iAd framework (iAd.framework) adds the following new features:
If you are using AV Kit to play a video, you can play preroll advertisements before the video is played.
You can look up more information about the the effectiveness of advertisements for your app.
SKSpriteNode objects can provide lighting information so that Sprite Kit automatically generates lighting effects and shadows. Add SKLightNode objects to the scene to specify the lights, and then customize the properties on these lights and any sprites to determine how the scene is lit.
The SKFieldNode class provides a number of physics special effects you can apply to a scene. For example, create magnetic fields, add drag effects, or even generate randomized motion. All effects are constrained to a specific region of the scene and you can carefully tune both the effect’s strength and how quickly the effect is weakened by distance. Field nodes make it easy to drop in an effect without having to search the entire list of physics bodies and apply forces to them.
A new SK3DNode class is used to integrate a Scene Kit scene into your game as a sprite. Each time that Sprite Kit renders your scene, it renders the 3D scene node first to generate a texture, then uses that texture to render a sprite in Sprite Kit. Creating 3D sprites can help you avoid needing to create dozens of frames of animation to produce an effect.
New actions have been added, including support for inverse kinematic animations.
A new system of constraints has been added to scene processing. Constraints are applied after physics is simulated and can be used to specify a set of rules for how a node is positioned and oriented. For example, you can use a constrant to specify that a particular node in the scene always points at another node in the scene. Constraints make it easier to implement rendering rules in your game without having to manually tweak the scene in your event loop.
A scene can implement all of the run-loop stages in a delegate instead. Using a delegate often means that you can avoid needing to subclass the SKScene class.
The SKView class provides more debugging information. You can also provide more performance hints to the renderer.
You can create normal map textures for use in lighting and physics calculations (or inside your own custom shaders). Use the new SKMutableTexture class when you need to create textures whose contents are dynamically updated.
You can dynamically generate texture atlases at runtime from a collection of textures.
Xcode 6 also incorporates many new Sprite Kit editors. Create or edit the contents of scenes directly, specifying the nodes that appear in the scene as well as their physics bodies and other characteristics. This scene is serialized to a file and can be loaded directly by your game. The editors save you time because often you don’t need to implement your own custom editors to create your game’s assets.
The UIKit framework (UIKit.framework) includes the following enhancements:
Apps that use local or push notifications must explicitly register the types of alerts that they display to users by using a UIUserNotificationSettings object. This registration process is separate from the process for registering remote notifications, and users must grant permission to deliver notifications through the requested options.
Local and push notifications can include custom actions as part of an alert. Custom actions appear as buttons in the alert. When tapped, your app is notified and asked to perform the corresponding action. Local notifications can also be triggered by interactions with Core Location regions.
Collection views support dynamically changing the size of cells. Typically, you use this support to accommodate changes to the preferred text size, but you can adapt it for other scenarios too. Collection views also support more options for invalidating different portions of the layout and thereby improving performance.
The UISearchController class replaces the UISearchDisplayController class for managing the display of search-related interfaces.
The UISplitViewController class is now supported on iPhone as well as iPad. The class adjusts its presented interface to adapt to the available space. It also changes the way it shows and hides the primary view controller, giving you more control over how to display the split view interface.
The UINavigationController class has new options for changing the size of the navigation bar or hiding it altogether by using gestures.
The new UIVisualEffect class enables you to integrate custom blur effects into your view hierarchies.
The new UIPresentationController class lets you separate the content of your view controllers from the chrome used to display them.
The new UIPopoverPresentationController class handles the presentation of content in a popover. The existing UIPopoverController class uses the popover presentation controller to show popovers on the screen.
The new UIPrinterPickerController class offers a view controller-based way to display a list of printers and to select one to use during printing. Printers are represented by instances of the new UIPrinter class.
You can take the user directly to your app-related settings in the Settings app. Pass the UIApplicationOpenSettingsURLString constant to the openURL: method of the UIApplication class.
The Video Toolbox framework (VideoToolbox.framework) includes direct access to hardware video encoding and decoding.
Deprecated APIs
The following APIs are deprecated:
The UIApplication methods and properties for registering notifications. Use the new API instead.
The UIViewController methods and properties for interface orientation. Traits and size classes replace them, as described in Unified Storyboards for Universal Apps. There are other smaller changes to UIKit API to support size classes; often older interfaces that used specific device idioms have been replaced.
iOS SDK 7.1 provides support for developing iOS apps, and it includes the 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 7. You can also test your apps using the included iOS Simulator, which supports iOS 7. iOS SDK 7.1 requires a Mac computer running OS X v10.8.4 (Mountain Lion) 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.
The following issues relate to using iOS SDK 7.1 beta 5 to develop code.
Bluetooth
Known Issue
32-bit apps running on a 64-bit device cannot attach to BTServer.
CFNetwork
Notes
A compatibility behavior has been added to address an issue where some web servers would send the wrong Content-Length value for “Content-Encoding: gzip” content. Previously,NSURLConnection and NSURLSession would send a “network connection was lost” / NSURLErrorNetworkConnectionLost (-1005) error in this situation.
The compatibility behavior applies only if the Content-Length value exactly matches the expanded gzip’d content. It won’t apply for “off by 1” or similar miscounting.
Safari
Notes
A property, minimal-ui, has been added for the viewport meta tag key that allows minimizing the top and bottom bars on the iPhone as the page loads. While on a page using minimal-ui, tapping the top bar brings the bars back. Tapping back in the content dismisses them again.
For example, use <meta name="viewport" content="width=1024, minimal-ui”>.
Siri
Notes
This seed adds new natural-sounding Siri voices for English (Australia), English (United Kingdom), Japanese, and Chinese (Mandarin - China).
The iOS device initially uses a compact voice for Siri. After you have configured a Wi-Fi network and have the device connected to a power source, iOS will automatically download and install a higher quality version.
Sync
Known Issue
In some situations, the “Connect to iTunes over USB to re-enable Wi-Fi Sync” prompt is not shown after an update as expected. Connecting to iTunes to re-enable Wi-Fi Sync is still required (and still functions as expected), it is just that the UI is not shown.
After upgrading to beta 5, iTunes Wi-Fi Sync users should connect their devices to their hosts to re-pair to enable wireless syncing.
If a UITextField or a UILabel that is baseline aligned with constraints has attributes that change after the constraints have been added, the layout may be incorrect. The exception to this is -setFont: on UILabel, which should work as expected.
Workaround: Avoid making changes in UITextField or UILabel after adding baseline-alignment constraints. If you must make changes, you should remove the constraints and then reapply them afterward. Note that this is a performance hit, so don’t do it unless it is necessary.
iOS SDK 7.0 provides support for developing iOS apps, and it includes the 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 7. You can also test your apps using the included iOS Simulator, which supports iOS 7. iOS SDK 7.0 requires a Mac computer running OS X v10.8.3 (Mountain Lion) 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.
The following issues relate to using iOS SDK 7.0 to develop code.
AirDrop
Notes
“Contacts Only” support requires that:
You are logged into iCloud.
The sender and receiver have each other’s Apple ID email addresses in Contacts on their devices.
Known Issues
“Contact Only” currently requires that you have an active Internet connection.
Occasionally, AirDrop will exhibit unreliability in discovery and/or data transfer to peers over Wi-Fi.
The App Store should support the ability to find an app capable of opening a received document based on the document’s Uniform Type Identifier (UTI). Currently, just a blank screen is displayed.
Edits made to iCloud Calendar events off-device will not push to the device.
Workaround: Update the calendar manually or trigger a fetch by modifying an event on-device.
Car Display
Known Issues
Support for Car Display will be provided once compatible systems are available.
Core Animation
Notes
When the UIViewGroupOpacity key is not present, the default value is now YES. The default was previously NO.
This means that subviews of a transparent view will first be composited onto that transparent view, then the precomposited subtree will be drawn as a whole onto the background. A NO setting results in less expensive, but also less accurate, compositing: each view in the transparent subtree is composited onto what’s underneath it, according to the parent’s opacity, in the normal painter’s algorithm order.
Core Data
Known Issues
Moving data from a local sandbox to iCloud using migratePersistentStore causes a crash. Instead, manually migrate the data store by iterating over the objects in the local data store file.
Game Center
Known Issues
When adding new Apple IDs to Game Center, they must be added through the Game Center app and not Settings.
If you launch a Game Center app while not logged into Game Center, the Game Center login sheet may be unreadable.
Game Kit
Known Issues
The API for sending reminders is present but unimplemented in this seed.
The API for loading leaderboard sets might need to be called a second time for it to succeed.
iCloud
Notes
Activation Lock, a new feature of Find My iPhone, is turned on automatically when Find My iPhone is enabled on any device running iOS 7. Activation Lock requires users to enter their Apple ID and password to turn off Find My iPhone, sign out of iCloud, erase the device, or reactivate the device after an erase. It’s important to sign out of iCloud, or choose Settings > General > Erase All Content and Settings, before transferring a device to a new user to allow them to use the device.
Known Issues
Signing out of an iCloud account with Find My iPhone turned on requires you to enter your Apple ID password. However, in some cases, the keyboard does not appear.
Workaround: Double-tapping the home button will bring up the keyboard.
On rare occasions, users might experience difficulties setting up iCloud Keychain on some of their devices.
Workaround: A temporary Reset iCloud Keychain button is available in iCloud Settings > Account > Account Security.
After users change their iCloud Security Code to Simple or Complex, they will not be able to recover their keychain items from the secure backup.
Workaround: Change the country code field under Account Security so that the user can receive the SMS Verification Code to complete the recovery process.
Sometimes when creating a new Apple ID and choosing to use iCloud in Setup Assistant, iCloud will not be turned on.
Workround: Go to Settings/iCloud and sign in with your Apple ID.
iCloud Keychain users who set up an additional device will receive an approval request to the other devices with iCloud Keychain turned on. The approval request will not be displayed if their screens are off and the devices are idle.
Workaround: Wake up any peer device to accept the approval request.
Users signing out of iCloud by deleting their iCloud account, erasing all contents and settings, or erasing the device via Find My iPhone and signing back in will not be presented with the correct iCloud Keychain setup screens.
Workaround: Use the seed-only iCloud Keychain Reset button.
Users who have a single device with iCloud Keychain on will not be presented with the correct iCloud Keychain setup screens after restoring from a backup.
Workaround: Use the seed-only iCloud Keychain Reset button.
When setting up iCloud Keychain, many iCloud Security Code candidates will be rejected for being too weak.
Workaround: Choose a 4-digit iCloud Security Code that does not have an obvious pattern.
Restoring your device from the same device’s iCloud backup will lose all passwords for Wi-Fi, profiles, accounts, and apps.
When just Calendars or just Reminders is toggled off then back on again in iCloud settings, data may not resync to the device.
Workaround: Turn off both Calendars and Reminders, and then turn them both back on.
Nonpurchased ePubs and PDFs will not be restored when iCloud-restoring an iOS 7 device with a pre-iOS 7 backup. Purchased content will be restored without issue.
Workaround: Use iTunes sync.
In iOS 7, Find My iPhone and Bookmarks toggles are no longer supported on secondary iCloud accounts. When you update your device with either of these options enabled on a secondary iCloud account, they will be turned off with no user notification.
Workaround: Set up the primary iCloud account via Settings/iCloud and then enable Find My iPhone or Bookmarks.
Users cannot use Simple or Complex iCloud Security Codes to recover their keychain items from their secure backup on iPhone 4.
Workaround: Use Random iCloud Security Codes to backup keychain items.
Location Services
Known Issues
Location Services will be off by default after updating from prior releases. This prohibits Find My iPhone from working.
Workaround: Turn on Location Services in Settings > Privacy > Location Services.
In this seed, GPS-based location is nonfunctional on iPhone 4. This includes AGPS call flows used for 911 emergency services location requests. Wi-Fi and cellular-based location remain functional.
MapKit
Notes
If the calls to renderInContext on the layer backing an MKMapView are made off the main thread, they should be eliminated or moved to the main thread. Failure to do so can cause an app crash. Instead of using renderInContext, use the new MKMapSnapshotter APIs.
Known Issues
Using +[MKMapCamera cameraLookingAtCenterCoordinate:fromEyeCoordinate:eyeAltitude:] may result in the wrong map heading being chosen.
Using +[MKMapSnapshot pointForCoordinate:] returns the wrong result for nonsquare snapshots.
Multitasking
Known Issues
Silent pushes will always wake the device.
Currently, there is no API that lets you inspect the settings controlling your app’s background behavior.
Music Player
Known Issues
MPMediaPickerController has been disabled for this seed. It will immediately return as if the user canceled the selection.
Networking
Notes
Cellular fallback is a technology that will attempt to connect over the cellular interface when a connection over the Wi-Fi interface does not succeed. There are a number of cases where connection failures may occur over Wi-Fi, such as a cable modem in need of a reboot or a firewall that blocks access to certain resources.
If your app restricts network operations over the cellular network, verify that your code is using the proper API to implement that policy.
For example, if your app watches SCNetworkReachability for the kSCNetworkReachabilityFlagsIsWWAN to monitor when Wi-Fi is available, it may not behave correctly under cellular fallback.
If an app uses this method and then attempts to connect, thinking it will get a connection over Wi-Fi, the app may inadvertently end up with a connection over the cellular network. The lack of thekSCNetworkReachabilityFlagsIsWWAN is not a guarantee that your connection will not go over cellular. If your code needs to enforce that a connection not go over cellular, it needs to specify that when making a networking request.
Instead, for CFNetwork code using CFSocketStream, CFHTTPStream, or similar APIs, set the kCFStreamPropertyNoCellular property to true on the CF object before connecting.
For NSURLRequests, call [request setAllowsCellularAccess: false].
In addition to making sure your code will never be connected over cellular because of cellular fallback, this call ensures that your code will never be connected over cellular because of the VPN or convoluted routing problems (connecting to IPv6 over cellular because only IPv4 is available over Wi-Fi, etc.).
To verify that your app is behaving properly, you should test against a broken Wi-Fi network. The easiest way to set up a broken Wi-Fi network is to set up an Apple AirPort Base Station or other Wi-Fi access point to hand out a DHCP address and leave the access point disconnected from the Internet. Another simple way of testing is to unplug the cable or DSL line from your cable or DLS modem.
Two low-level networking APIs that used to return a MAC address now return the fixed value 02:00:00:00:00:00. The APIs in question are sysctl (NET_RT_IFLIST) and ioctl (SIOCGIFCONF). Developers using the value of the MAC address should migrate to identifiers such as -[UIDevice identifierForVendor]. This change affects all apps running on iOS 7.
Newsstand
Known Issues
Newsstand background downloads that use HTTP basic or digest authentication will prompt the user with authorization alerts (NSURLConnectionDelegate callbacks forconnectionShouldUseCredentialStorage and willSendRequestForAuthenticationChallenge are not called correctly).
Nike + iPod
Known Issues
The Nike + iPod app is not included in this seed.
Objective-C Runtime
Notes
Due to changes in how the isa field is implemented, *self may change during enumeration (for example, if the container is retained).
Workaround: When implementing countByEnumeratingWithState, do not set state->mutationsPtr = self.
Phone
Known Issues
If you select Voicemail and then another option, such as Contacts, and then return to Voicemail, the Phone app hangs. You will need to kill the Phone app and relaunch it.
Reminders
Known Issues
Reminders may become unusable after the user creates a new list.
Safari
Known Issues
Safari website credentials do not always autofill between mobile and desktop versions.
Workaround: Use the desktop version if the site offers it.
Users cannot delete their passwords via Safari Settings > Autofill.
The SafariServices addToReadingList API doesn't work on devices. However, it works fine on iOS Simulator.
If a user deletes a saved credit card number (from Autofill), it will still autofill.
Workaround: After deleting a credit card from Autofill, force-quit Safari or reboot the device.
Security
Notes
-[UIDevice uniqueIdentifier] is no longer accepted in submissions to the App Store. In iOS 7, apps that are already on the store or on users’ devices that call this removed API will no longer be returned the UDID. Instead, -[UIDevice uniqueIdentifier] will return a 40-character string starting with FFFFFFFF, followed by the hex value of -[UIDevice identifierForVendor]. It is important to consider how this will affect existing apps. Consider submitting updates that no longer access the UDID.
iOS now requests user consent for apps to use the microphone hardware on all iOS 6 devices. For devices sold in China, iOS will also request user consent for apps to use the camera hardware. The operating system will present the consent alert when you set the category of the instantiated AVAudioSesison. The AVAudioSessionCategories that will present the alert areAVAudioSessionCategoryRecord and AVAudioSessionCategoryPlayAndRecord.
If the user doesn’t allow access, the audio session data will be all zeros (silence). For devices where camera access is requested and denied by the user, the video capture session is a black screen.
The API gethostuuid() has been removed and will not be accepted for submission to the store regardless of the targeted OS. For existing apps running on iOS 7, the function will return a uuid_trepresentation of the vendor identifier (-[UIDevice identifierForVendor]).
Known Issues
Changing the Require Passcode time setting after a restore from backup will require a reboot for the change to take effect.
Settings
Known Issues
In General > Background App Refresh, the per-app settings are not honored.
In Notification Center, when selecting an alert style for an app, the examples for None, Banners, and Alerts are not displayed.
Siri
Known Issues
The new Siri voices are not in this seed.
Social
Notes
Up through iOS 6, when using TWTweetComposeViewController and SLComposeViewController (the latter only for Twitter and Weibo, but not Facebook), if the caller supplies a completionHandler, the supplied completionHandler is responsible for dismissing the view controller. As of iOS 7, if the app links against the iOS 7 SDK, the view controller will dismiss itself even if the caller supplies acompletionHandler. To avoid this, the caller’s completionHandler should not dismiss the view controller.
Known Issues
When using the iOS 6.1 SDK on OS X v10.8 Mountain Lion, if you use the iOS 5.0 or iOS 5.1 Legacy SDK in iOS Simulator, you will not be able to use Twitter features: attempting to sign in to Twitter via the Settings pane will fail, and Twitter.framework will not work correctly. If you need to test Twitter features, you will need to choose either an iOS 6.1 or iOS 6.0 Simulator run destination, or you can test with iOS 5.x on a device.
Springboard
Notes
Active touches are no longer canceled when the user takes a screenshot.
Dynamic wallpaper is not available on iPhone 4.
Known Issues
When restoring from an iCloud backup on a device with hundreds of apps, Springboard may crash repeatedly.
Sync
Known Issues
The Wi-Fi sync option in iTunes is checked, but Wi-Fi devices do not appear in iTunes.
Workaround: On OS X, install the iOS 7.0 SDK after installing iTunes. Wi-Fi sync is not supported on Windows.
UIKit
Notes
+[UIPasteboard pasteboardWithName:create:] and +[UIPasteboard pasteboardWithUniqueName] now unique the given name to allow only those apps in the same application group to access the pasteboard. If the developer attempts to create a pasteboard with a name that already exists and they are not part of the same app suite, they will get their own unique and private pasteboard. Note that this does not affect the system provided pasteboards, general, and find.
Blurred layers are not available on iPhone 4.
Parallax is not available on iPhone 4.
Letterpress text is not available on iPhone 4.
Known Issues
When a device without a passcode is connected to an untrusted computer, iTunes will tell the user to approve on the phone, yet the phone never asks the user to approve. The phone is trusted anyway, so there is no functional impact, but the UI is missing.
UIPickerView with custom views doesn't show the views in the selection indicator.
UIRefreshControl and the associated table view are hidden under the nav bar when setTranslucent: is NO.
Auto Layout constraints do not take bar height into account, which leads to issues during rotation or when the height of the status bar changes.
Print Center is not functional. Seeing print job progress, job name, or job preview icon is not available in this seed. To ensure that the job name is correct for print jobs, use the Printer Simulator app in Xcode and check the log.
When using Auto Layout to position a UIButton, if you set the content compression resistance or content hugging priority to minimum, the button will have ambiguous layout.
Workaround: Don’t use a content compression resistance or content hugging priority of less than 2 for UIButton.
UISwitchonTintColors is always green irrespective of what it’s set to.
The title of the UIRefreshControl appears below the navigation bar.
USB Tethering
Known Issues
Personal Hotspot (Internet Tethering) will not work if this seed of the iOS SDK 7.0 is installed.
Voice Memos
Known Issues
The VoiceMemos app is not available in this seed.
VoiceOver
Known Issues
Maps does not work with VoiceOver.
Siri and VoiceOver do not always work together properly.
Reminders does not work with VoiceOver.
Weather
Notes
Weather conditions are not animated on iPhone 4.
WebKit
Notes
Previously, when the viewport parameters were modified, the old parameters were never discarded. This caused the viewport parameters to be additive.
For example, if you started with width=device-width and then changed it to initial-scale=1.0, you ended up with a computed viewport of .
In iOS 7, this has been addressed. Now you end up with with a computed viewport of initial-scale=1.0.
Previously, when using <meta name="viewport" content="initial-scale=1.0, user-scalable=1">, the scale could be incorrect after rotation.
Now, if a user has not scaled the page explicitly, the page is restored to its initial scale. Also, the current scale is now correctly restricted within the min-scale, max-scale bounds.
Known Issues
Some images for Retina display devices appear at twice the size that they should instead of being scaled down 50%. This issue can also occur with any image to be scaled that is larger than its container and that uses either the background-size property or the -webkit-background-size property. This issue affects both native apps that display web content and web pages viewed in Safari for iPhone.
The background CSS shorthand property now resets the value of the background-size property to auto when background size is not specified. This new behavior is per the CSS spec, and the old behavior is available only for apps linked to an SDK prior to iOS 7.0 when running on iOS 7 or later.
Workaround: Specify the background-size property or the -webkit-background-size property after the background shorthand property in the CSS stylesheet for the web content being displayed.
When scrolling a page with animations, the animations stop and do not resume when the scrolling has stopped.
iOS 7 is a major update with compelling features for developers to incorporate into their apps. The UI has been completely redesigned. In addition, iOS 7 introduces a new animation system for creating 2D and 2.5D games. Multitasking enhancements, peer-to-peer connectivity, and many other important features make iOS 7 the most significant release since the first iPhone SDK.
This article summarizes the key developer-related features introduced in iOS 7. This version of the operating system runs on current iOS-based devices. In addition to describing the key new features, this article lists the documents that describe those features in more detail.
For late-breaking news and information about known issues, see iOS 7 Release Notes. For the complete list of new APIs added in iOS 7, see iOS 7.0 API Diffs.
User Interface Changes
iOS 7 includes many new features intended to help you create great user interfaces.
A New Design
The iOS 7 UI has been completely redesigned. Throughout the system, a sharpened focus on functionality and on the user's content informs every aspect of design. Translucency, refined visual touches—and fluid, realistic motion—impart clarity, depth, and vitality to the user experience. Whether you're creating a new app or updating an existing one, keep these qualities in mind as you work on the design.
Apps compiled against the iOS 7 SDK automatically receive the new appearance for any standard system views when the app is run on iOS 7. If you use Auto Layout to set the size and position of your views, those views are repositioned as needed. But there may still be additional work to do to make sure your interface still has the appearance you want. Similarly, if you customize your app’s views, you may need to make changes to support the new appearance fully.
For guidance on how to design apps that take full advantage of the new look in iOS 7, see iOS 7 Design Resources.
UIKit Dynamics
Apps can now specify dynamic behaviors for UIView objects and for other objects that conform to the UIDynamicItem protocol. (Objects that conform to this protocol are called dynamic items.) Dynamic behaviors offer a way to improve the user experience of your app by incorporating real-world behavior and characteristics, such as gravity, into your app’s animations. UIKit supports the following types of dynamic behaviors:
A UIAttachmentBehavior object specifies a connection between two dynamic items or between an item and a point. When one item (or point) moves, the attached item also moves. The connection is not completely static, though. An attachment behavior has damping and oscillation properties that determine how the behavior changes over time.
A UICollisionBehavior object lets dynamic items participate in collisions with each other and with the behavior’s specified boundaries. The behavior also lets those items respond appropriately to collisions.
A UIGravityBehavior object specifies a gravity vector for its dynamic items. Dynamic items accelerate in the vector’s direction until they collide with other appropriately configured items or with a boundary.
A UIPushBehavior object specifies a continuous or instantaneous force vector for its dynamic items.
A UISnapBehavior object specifies a snap point for a dynamic item. The item snaps to the point with a configured effect. For example, it can snap to the point as if it were attached to a spring.
Dynamic behaviors become active when you add them to an animator object, which is an instance of the UIDynamicAnimator class. The animator provides the context in which dynamic behaviors execute. A given dynamic item can have multiple behaviors, but all of those behaviors must be animated by the same animator object.
Text Kit is a full-featured, high-level framework for apps that need to handle text that has all the characteristics of fine typography. Text Kit can lay out styled text into paragraphs, columns, and pages; it easily flows text around arbitrary regions such as graphics; and it manages multiple fonts. Text Kit is integrated with all UIKit text-based controls to enable applications to create, edit, display, and store text more easily—and with less code than was previously possible in iOS.
Text Kit comprises new classes plus extensions to existing classes, including the following:
The NSAttributedString class has been extended to support new attributes.
The NSLayoutManager class generates glyphs and lays out text.
The NSTextContainer class defines a region where text is laid out.
The NSTextStorage class defines the fundamental interface for managing text-based content.
iOS 7 supports the following new background execution modes for apps:
Apps that regularly require new content can register with the system and be woken up or launched periodically to download that content in the background. To register, include the UIBackgroundModes key with the fetch value in your app’s Info.plist file and set the minimum time you want between fetch operations using the setMinimumBackgroundFetchInterval: method. You must also implement the application:performFetchWithCompletionHandler: method in your app delegate to perform any downloads.
Apps that use push notifications to notify the user that new content is available can now use those notifications to initiate background download operations. To support this mode, include the UIBackgroundModes key with the remote-notification value in your app’s Info.plist file. Your app delegate must also implement the application:didReceiveRemoteNotification:fetchCompletionHandler: method.
Apps supporting either the fetch or remote-notification background modes may be launched or moved from the suspended to background state at appropriate times. In the case of the fetch background mode, the system uses available information to determine the best time to launch or wake apps. For example, it does so when networking condition are good or when the device is already awake. Apps supporting the remote-notification background mode may be woken up when a new push notification arrives but before that notification is delivered to the user. The app can use the interval to download new content and have that content ready to present to the user when the notification is subsequently delivered.
To handle the downloading of content in the background, apps should use the new NSURLSession class. This class improves on the existing NSURLConnection class by providing a simple, task-based interface for initiating and processing NSURLRequest objects. A single NSURLSession object can initiate multiple download and upload tasks, and through its delegate can handle any authentication requests coming from the server.
The Sprite Kit framework (SpriteKit.framework) provides a hardware-accelerated animation system optimized for creating 2D and 2.5D games. Sprite Kit provides the infrastructure that most games need, including a graphics rendering and animation system, sound playback support, and a physics simulation engine. Using Sprite Kit frees you from creating these things yourself and lets you focus on the design of your content and the high-level interactions for that content.
Content in a Sprite Kit app is organized into scenes. A scene can include textured objects, video, path-based shapes, Core Image filters, and other special effects. Sprite Kit takes those objects and determines the most efficient way to render them onscreen. When it comes time to animate the content in your scenes, you can use Sprite Kit to specify explicit actions you want to perform or use the physics simulation engine to define physical behaviors (such as gravity, attraction, or repulsion) for your objects.
In addition to the Sprite Kit framework, there are Xcode tools for creating particle emitter effects and texture atlases. You can use the Xcode tools to manage app assets and update Sprite Kit scenes quickly.
The Game Controller framework (GameController.framework) lets you discover and configure Made-for-iPhone/iPod/iPad (MFi) game controller hardware in your app. Game controllers can be devices connected physically to an iOS device or connected wirelessly over Bluetooth. The Game Controller framework notifies your app when controllers become available and lets you specify which controller inputs are relevant to your app.
Exchanges give players an opportunity to initiate actions with other players, even when it is not their turn. You can use this feature to implement simultaneous turns, player chats, and trading between players when it is not their turn.
The limit on per-app leaderboards has been raised from 25 to 100. You can also organize your leaderboards using a GKLeaderboardSet object, which increases the limit to 500.
You can add conditions to challenges that define when the challenge has been met. For example, a challenge to beat a time in a driving game might stipulate that other players must use the same vehicle.
The framework has improved its authentication support and added other features to prevent cheating.
The Map Kit framework (MapKit.framework) includes numerous improvements and features for apps that use map-based information. Apps that use maps to display location-based information can now take full advantage of the 3D map support found in the Maps app, including controlling the viewing perspective programmatically. Map Kit includes other changes that enhance maps in your app.
Overlays can be placed at different levels in the map content, so that they appear above or below other relevant data.
You can apply an MKMapCamera object to a map to add position, tilt, and heading information to their appearance. Camera information imparts a 3D viewing experience onto your map like the one provided by Maps.
The MKDirections class lets you ask for direction-related route information from Apple. You can use that route information to create overlays for display on your own maps.
The MKGeodesicPolyline class lets you create a line-based overlay that follows the curvature of the earth.
Apps can use the MKMapSnapshotter class to capture map-based images.
The visual representation of overlays is now based on the MKOverlayRenderer class, which replaces overlay views and offers a simpler rendering approach.
AirDrop lets users share photos, documents, URLs, and other kinds of data with nearby devices. AirDrop support is now built-in to the existingUIActivityViewController class. This class displays different options for sharing the content that you specify. If you are not yet using this class, you should consider adding it to your interface.
The Audio Unit framework (AudioUnit.framework) adds support for Inter-App Audio, which enables the ability to send MIDI commands and stream audio between apps on the same device. For example, you might use this feature to record music from an app acting as an instrument or use it to send audio to another app for processing. To vend your app’s audio data, publish a AURemoteIO instance as an audio component that is visible to other processes. to use audio features from another app, use the audio component discovery interfaces in iOS 7.
For information about the new interfaces, see the framework header files. For general information about the interfaces of this framework, see Audio Toolbox Framework Reference.
Peer-to-Peer Connectivity
The Multipeer Connectivity framework (MultipeerConnectivity.framework) supports the discovery of nearby devices and the direct communication with those devices without requiring Internet connectivity. This framework makes it possible to create multipeer sessions easily and to support reliable in-order data transmission and real-time data transmission. With this framework, your app can communicate with nearby devices and seamlessly exchange data.
The framework provides programmatic and UI-based options for discovering and managing network services. Apps can integrate the MCPeerPickerViewControllerclass into their UI to display a list of peer devices for the user to choose from. Alternatively, you can use the MCNearbyServiceBrowser class to look for and manage peer devices programmatically.
The Game Controller framework provides an interface for communicating with game-related hardware; see “Game Controller Framework”.
The Sprite Kit framework provides support for sprite-based animations and graphics rendering; see “Sprite Kit Framework.”
The Multipeer Connectivity framework provides peer-to-peer networking for apps; see “Peer-to-Peer Connectivity.”
The JavaScript Core framework (JavaScriptCore.framework) provides Objective-C wrapper classes for many standard JavaScript objects. Use this framework to evaluate JavaScript code and parse JSON data. For information about the classes of this framework, see the header files.
The Media Accessibility framework (MediaAccessibility.framework) manages the presentation of closed-caption content in your media files. This framework works in conjunction with new settings that let the user enable the display of closed captions.
The Safari Services framework (SafariServices.framework) provides support for programmatically adding URLs to the user’s Safari reading list. For information about the class provided by this framework, see the framework header files.
Additional Framework Enhancements
In addition to the items discussed in the preceding sections, the following frameworks have significant enhancements. For a complete list of new interfaces, see iOS 7.0 API Diffs.
UIKit Framework
The UIKit framework (UIKit.framework) includes the following enhancements:
All UI elements have been updated to present the new look associated with iOS 7.
UIKit Dynamics lets you mimic real-world effects such as gravity in your animations; see “UIKit Dynamics.”
Text Kit provides sophisticated text editing and display capabilities; see “Text Kit.”
The tintColor property applies a tint color that affects both the view and its subviews. For information on how to apply tint colors, see iOS 7 UI Transition Guide.
You can create keyframe-based animations using views. You can also make changes to your views and specifically prevent any animations from being performed.
View controller transitions can be customized, driven interactively, or replaced altogether with ones you designate.
View controllers can now specify their preferred status bar style and visibility. The system uses the provided information to manage the status bar style as new view controllers appear. You can also control how this behavior is applied using the UIViewControllerBasedStatusBarAppearance key in your app’sInfo.plist file.
The UIMotionEffect class defines the basic behavior for motion effects, which are objects that define how a view responds to device-based motion.
Collection views support UIKit Dynamics. Using this support, you can apply behavior objects to layout attributes to animate the corresponding items in the collection.
The imageNamed: method of UIImage supports retrieving images stored in image asset catalogs, which are a way to manage and optimize assets that have multiple sizes and resolutions. You create image asset catalogs in Xcode.
There is a new snapshot method on UIView and UIScreen creates a view that you can use to present your app’s content.
The UIKeyCommand class wraps keyboard events received from an external hardware keyboard. These events are delivered to the app’s responder chain for processing.
A UIFontDescriptor object describes a font using a dictionary of attributes. Use font descriptors to interoperate with other platforms.
The UIFont and UIFontDescriptor classes support dynamic text sizing, which improves legibility for text in apps. With this feature, the user controls the desired font size that all apps in the system should use.
The UIActivity class now supports new activity types, including activities for sending items via AirDrop, adding items to a Safari reading list, and posting content to Flickr, Tencent Weibo, and Vimeo.
The UIApplicationDelegate protocol adds methods for handling background fetch behaviors.
UIKit adds support for running in a guided-access mode, which allows an app to lock itself to prevent modification by the user. This app is intended for institutions such as schools where users bring their own devices but need to run apps provided by the institution.
State restoration now allows the saving and restoration of any object. Objects adopting the UIStateRestoring protocol can write out state information when the app moves to the background and have that state restored during subsequent launches.
Table views now support estimating the height of rows and other elements, which improves scrolling performance.
The Store Kit framework (StoreKit.framework) has migrated to a new receipt system that developers can use to verify in-app purchases on the device itself. You can also use it to verify the app purchase receipt on the server.
The Security framework (Security.framework) adds support for syncing passwords between user's devices via iCloud. Apps can mark their keychain items for iCloud via a new keychain attribute (kSecAttrSyncronizable).
For more information about this attribute, see the framework header files. For general information about the keychain, see the Keychain Services Programming Guide.
Pass Kit Framework
The Pass Kit framework (PassKit.framework) includes new APIs for adding multiple passes at once, along with these additions to the pass file format:
New keys specify the expiration date for a pass.
You can specify that a pass is relevant only when it is in the vicinity of specific Bluetooth beacons.
New attributes control how a pass is displayed. You can group passes together, display links with custom text on the back of a pass, and control how time values are displayed on the pass.
You can now associate extra data with a pass. This data is available to your app but not displayed to the user.
You can designate which data detectors to apply to the fields of your passes.
The EXT_sRGB extension adds support for sRGB framebuffer operations.
The GL_APPLE_pvrtc_sRGB extension adds support for sRGB texture data compressed in the PVRTC texture format.
The GL_APPLE_draw_instanced and GL_APPLE_instanced_arrays extensions can improve rendering performance when your app draws multiple instances of the same object. You use a single call to draw instances of the same object. You add variation to each instance by specifying how fast each vertex attribute advances or by referencing an ID for each instance in your shader.
As always, check for the existence of an extension before using it in your app.
Also, textures can now be accessed in vertex shaders; query the value of the MAX_VERTEX_TEXTURE_IMAGE_UNITS attribute to determine the exact number of textures you can access.
MessageUI Framework
In the MessageUI framework, the MFMessageComposeViewController class adds support for attaching files to messages. For information about the new interfaces, see the framework header files.
In the Media Player framework, the MPVolumeView class provides support for determining whether wireless routes such as AirPlay and Bluetooth are available for the user to select. You can also determine whether one of these wireless routes is currently active. For information about the new interfaces, see the framework header files. For information about the classes of Media Player framework, see Media Player Framework Reference.
Map Kit Framework
The Map Kit framework (MapKit.framework) includes changes that are described in “Maps.”
The Image I/O framework (ImageIO.framework) now has interfaces for getting and setting image metadata.
For information about the new interfaces, see the framework header files. For information about the classes of this framework, see Image I/O Reference Collection.
iAd Framework
The iAd framework (iAd.framework) includes two extensions to other frameworks that make it easier to incorporate ads into your app’s content:
The framework introduces new methods on the MPMoviePlayerController class that let you run ads before a movie.
The framework extends the UIViewController class to make it easier to create ad-supported content. You can now configure your view controllers to display ads before displaying the actual content they manage.
For information about the new interfaces, see the framework header files. For information about the classes of this framework, see Ad Support Framework Reference.
Game Kit Framework
The Game Kit framework (GameKit.framework) includes numerous changes, which are described in “Game Center Improvements.”
The Foundation framework (Foundation.framework) includes the following enhancements:
The NSURLSession class is a new class for managing the acquisition of network-based resources in the background. This class serves as a replacement for theNSURLConnection class and its delegate; it also replaces the NSURLDownload class and its delegate.
The NSURLComponents class is a new class for parsing the components of a URL. This class supports the URI standard (rfc3986/STD66) for parsing URLs.
The NSURLCredential and NSURLCredentialStorage classes let you create credentials with a synchronizable policy and provide the option of removing credentials with a synchronizable policy from iCloud.
For information about the new interfaces, see the framework header files and Foundation release notes. For general information about the classes of this framework, see Foundation Framework Reference.
Core Telephony Framework
The Core Telephony framework (CoreTelephony.framework) lets you get information about the type of radio technology in use by the device, the current signal strength, and the cell ID serving the device. Apps developed in conjunction with a carrier can also authenticate their apps against a particular subscriber for that carrier.
For information about the new interfaces, see the framework header files. For general information about the classes of the Core Telephony framework, see Core Telephony Framework Reference
Core Motion Framework
The Core Motion framework (CoreMotion.framework) adds support for step counting and motion tracking. With step counting, the framework detects movements that correspond to user motion and uses that information to report the number of steps to your app. Because the system detects the motion, the system can continue to gather step data even when your app is not running. Alongside this feature, the framework can also distinguish different types of motion, including different motions reflective of travel by walking, by running, or by automobile. Navigation apps might use that data to change the type of directions they give to users.
For information about the new interfaces, see the framework header files. For general information about the classes of this framework, see Core Motion Framework Reference.
Core Location Framework
The Core Location framework (CoreLocation.framework) supports ranging using Bluetooth devices. Ranging lets you determine the relative range of nearby Bluetooth devices and respond appropriately. For example, a museum might place Bluetooth beacons in its galleries and provide visitors with an app that displays information as the user enters and exits those galleries. The framework also supports deferring the delivery of location updates until a specific time has elapsed or the user has moved a minimum distance.
The Core Foundation framework (CoreFoundation.framework) now supports scheduling stream objects on dispatch queues. For information about the new interfaces, see the framework header files.
The Core Bluetooth framework (CoreBluetooth.framework) includes the following enhancements:
The framework supports saving state information for central and peripheral objects and restoring that state at app launch time. You can use this feature to support long-term actions involving Bluetooth devices.
The central and peripheral classes now use an NSUUID object to store unique identifiers.
You can now retrieve peripheral objects from a central manager synchronously.
For information about the new interfaces, see the framework header files. For general information about the classes of this framework, see Core Bluetooth Framework Reference.
AV Foundation Framework
The AV Foundation framework (AVFoundation.framework) includes the following enhancements:
The AVAudioSession class supports the following new behaviors:
Support for selecting the preferred audio input, including audio from built-in microphones
Support for multichannel input and output
The AVVideoCompositing and related classes let you support custom video compositors.
The AVSpeechSynthesizer and related classes provide speech synthesis capabilities.
The capture classes add support and interfaces for the following features:
Discovery of a camera’s supported formats
Support for 60 fps recording
Video zoom (true and digital) in recordings and video preview, including custom ramping
Real-time discovery of machine-readable barcode metadata
Autofocus range restriction
Access to the clocks used during capture
There are new metadata key spaces for supported ISO formats such as MPEG-4 and 3GPP and improved support for filtering metadata items when copying those items from source assets to output files using the AVAssetExportSession class.
The AVAssetWriter class provides assistance in formulating output settings and there are new level constants for H.264 encoding.
The AVPlayerLayer class adds the videoRect property, which you can use to get the size and position of the video image.
The AVPlayerItem class supports the following changes:
Asset properties can be loaded automatically when AVPlayerItem objects are prepared for playback.
When you link your app against iOS SDK 7, the behavior when getting the values of player item properties—such as the duration, or tracks, orpresentationSize properties—is different than pervious versions of iOS. The properties of this class now return a default value and no longer block your app if the AVPlayerItem object is is not yet ready to play. As soon as the player item’s status changes to AVPlayerItemStatusReadyToPlay, the getters reflect the actual values of the underlying media resource. If you use key-value observing to monitor changes to the properties, your observers are notified as soon as changes are available.
The AVPlayerItemLegibleOutput class can process timed text from media files.
The AVAssetResourceLoadingDelegate protocol now supports loading of arbitrary ranges of bytes from a media resource.
For information about the new interfaces, see the framework header files. For general information about the classes of this framework, see AV Foundation Framework Reference.
Accelerate Framework
The Accelerate framework (Accelerate.framework) includes the following enhancements:
Improved support for manipulating Core Graphics data types
Support for working with grayscale images of 1, 2, or 4 bits per pixel
New routines for converting images between different formats and transforming image contents
Support for biquad (IIR) operations
For information about the new interfaces, see the framework header files. For general information about the functions and types of this framework, see Accelerate Framework Reference.
Objective-C
The Objective-C programming language has been enhanced to support modules, resulting in faster builds and shorter project indexing times. Module support is enabled in all new projects created using Xcode 5. If you have existing projects, you must enable this support explicitly by modifying your project’s Enable Modules setting.
Deprecated APIs
From time to time, Apple adds deprecation macros to APIs to indicate that those APIs should no longer be used in active development. When a deprecation occurs, it is not an immediate end-of-life to the specified API. Instead, it is the beginning of a grace period for transitioning off that API and onto newer and more modern replacements. Deprecated APIs typically remain present and usable in the system for a reasonable amount of time past the release in which they were deprecated. However, active development on them ceases and the APIs receive only minor changes—to accommodate security patches or to fix other critical bugs. Deprecated APIs may be removed entirely from a future version of the operating system.
As a developer, it is important that you avoid using deprecated APIs in your code as soon as possible. At a minimum, new code you write should never use deprecated APIs. And if you have existing code that uses deprecated APIs, update that code as soon as possible. Fortunately, the compiler generates warnings whenever it spots the use of a deprecated API in your code and you can use those warnings to track down and remove all references to those APIs.
This release includes deprecations in the following technology areas:
The Map Kit framework includes deprecations for the MKOverlayView class and its various subclasses. The existing overlay views have been replaced with an updated set of overlay renderer objects that descend from the MKOverlayRenderer class. For more information about the classes of this framework, see Map Kit Framework Reference.
The AudioSession API in the Audio Toolbox framework is deprecated. Applications should use the AVAudioSession class in the AV Foundation framework instead.
The CLRegion class in the Core Location framework is replaced by the CLCircularRegion class. The CLRegion class continues to exist as an abstract base class that supports both geographic and beacon regions.
The UUID property of the CBCentral class is deprecated. To specify the unique ID of your central objects, use the identifier property instead.
The Game Kit framework contains assorted deprecations intended to clean up the existing API and provide better support for new features.
The UIKit framework contains the following deprecations:
The wantsFullScreenLayout property of UIViewController is deprecated. In iOS 7 and later, view controllers always support full screen layout.
The UIPopoverController class no longer supports the notion of an arrow direction; it supports a presentation direction.
UIColor objects that provided background textures for earlier versions of iOS are gone.
Many drawing additions to the NSString class are deprecated in favor of newer variants.
The gethostuuid function in the libsyscall library is deprecated.
In iOS 7 and later, if you ask for the MAC address of an iOS device, the system returns the value 02:00:00:00:00:00. If you need to identify the device, use theidentifierForVendor property of UIDevice instead. (Apps that need an identifier for their own advertising purposes should consider using theadvertisingIdentifier property of ASIdentifierManager instead.)
For a complete list of specific API deprecations, see iOS 7.0 API Diffs.
Reimagine your apps on iOS 7. Download the SDK today and take advantage of the new multitasking APIs, dynamic motion controls in UIKit, AirDrop, Sprite Kit, enhanced video APIs, new features in Game Center and Map Kit, and so much more.
Design and Develop for iOS 7
User Interface
Elevate the content of your apps and make your user interface come alive on iOS 7. Adopt the new design to simplify and revitalize your app with clarity, translucency, and depth. UIKit allows you to incorporate realistic motion and transitions with new APIs that enable your user interface to respond to every touch and swipe by following the behaviors and physical constraints you define. Take advantage of powerful new text layout tools and dynamic type that respect the design principals of iOS 7.
Share photos, documents, URLs and other types of data with multiple devices nearby by adding AirDrop support to your app. By simply adding the Activity sheet, all the details of sharing your content peer-to-peer is handled for you—no network or setup required. And with Wi-Fi peer-to-peer technology you can use the same underlying technology to directly connect with multiple devices nearby, and let your users easily share information with each other.
Keep the content of your app up-to-date by adopting the new multitasking APIs in iOS 7. The new services allow your app to update information and download content in the background without draining the battery unnecessarily. The updates can happen at opportunistic times and are intelligently scheduled according to usage, so your app can update content in the background just when your users need it.
Create new immersive experiences using the latest game technologies in iOS 7. Develop high-performance 2D games with the powerful new Sprite Kit framework, which combines everything you need to animate sprites, simulate physics and create beautiful particle systems all in one easy-to-use set of APIs. Hand the controls over to your users by adding support for upcoming MFi game controllers to your game. And the re-designed Game Center adds more modes for turn-based games and more leaderboards, as well as allowing you to authenticate players, and securely transmit game scores and achievements.
Let your users capture and compose photos and videos just the way they want. Capture video at 60fps, so you can replay dramatic scenes in slow motion. Get a closer look by directly controlling the zoom level of the camera. Create video effects and transitions by combining multiple video tracks using the custom video compositing APIs. Scan and recognize barcodes with the camera.
Enhance your apps with support for new types of accessories. Location beacons are a new class of low-powered, low-cost transmitters that can notify nearby iOS 7 devices of their presence. Location beacons will provide apps a whole new level of location awareness, such as trail markers in a park, exhibits in a museum or product displays in stores. Other new features include the ability to setup and configure Wi-Fi accessories, such as AirPlay speakers, directly from iOS. And iOS 7 works with more Bluetooth LE profiles, including time, notifications, keyboards, and stereo sound.
Now your apps can make beautiful music together. With Inter-App Audio, apps can register their audio streams to share with other apps. For example, a series of apps could publish audio streams of instrument tracks while another uses the combination of these streams to compose a song. Inter-App Audio also provides for MIDI control of audio rendering, remotely launching other registered Inter-App Audio apps and more.
Take your apps in new directions with the new features of Map Kit. iOS 7 introduces directions APIs, enabling you to guide users to their destinations from within your app. Allow your users to rotate and move around the map in 3D using updated views and controls. And you have even more control of overlays, making it possible to place them at different layers or replace portions of the map altogether.
iOS 7 beta supports iPhone 4, iPhone 4S, iPhone 5, and iPod touch (5th generation). Support for iPad 2, iPad with Retina display, and iPad mini is coming later this summer.
- LTE 지원합니다. 더 많은 통신 사업자 (애플은 이전이 이번 주에 더 많은 LTE 사업자를 추가 할 것이라고 발표)에 대한 36 추가 아이폰 캐리어. 23 추가 아이 패드 캐리어. - Siri 로 Fandango를 통해 영화 티켓 구매 가능 (미국 만 해당)
- 아이튠즈 매치 가입자는 지금 iCloud에서 개별 곡을 다운로드 할 수 있습니다 - 새로운 버튼을 클릭으로 광고 식별자를 재설정 할 수 있습니다.
- LTE support for more carriers (Apple previously announced that it would add more LTE carriers this week). 36 additional iPhone carriers. 23 additional iPad carriers.
- iTunes Match subscribers can now download individual songs from iCloud
- New button to reset the Advertising Identifier.
Xcode 업데이트 4.6
버전 4.6 등록일 2013.01.28
- OS X 10.8 사자와 iOS 6.1을위한 SDK를 제공합니다. - 코드 완성 추론이 더 정확합니다. 그리고 최적화 된 기본 데이터 세트를 사용합니다. - 새로운 컴파일러 경고가 ARC와 약한 참조를 사용하는 경우 잠재적 인 버그를 식별하는 데 도움이됩니다. - C + 11 '사용자 정의 리터럴'와 '무제한 노동 조합'기능을 지원합니다. - 디버거는 NSArray 또는 NSDictionary 객체 요소를 검사 할 수 있습니다. - 지금 깊은 Objective-C와 C + + 코드의 간 기능 정적 분석을 수행 분석 할 수 있습니다. - 색인 패스의 수는 향상된 의존성 검사로 인해 감소된다. - 추가 버그 수정 및 안정성 개선.
- Includes SDKs for OS X 10.8 Mountain Lion and iOS 6.1. - Code completion heuristics are more accurate. and use an optimized default data set. - New compiler warnings help identify potential bugs when using ARC and weak references. - C++11 support for 'user defined literals' and 'unrestricted unions' features. - Debugger can inspect elements within NSArray or NSDictionary objects. - Analyze now performs deeper cross-function static analysis of Objective-C and C++ code. - The number of indexing passes is reduced due to improved dependency checking. - Additional bug fixes and stability improvements.
우선 잠금 상태에서의 알림창 ~ ! 기존에는 파란색 팝업이 떴었지만 이젠 아주 뽀대나게 아래와 같은 화면으로바꼈고,
이 상태에서 여러 메시지가 겹치도록 되어있다.
재미있는건 해당 아이콘을 잡고 밀어서 잠금 해제가 된다는 사실 ~!! 물론 예상한대로 잠금 해제하면 해당 아이콘 앱이 바로실행된다.
잠금후에 알림내용은 마치 안드로이드폰의 그것처럼 상단부분에서 아래로 화면을 쓸어내리면 알림창이 따로 단독으로 내려와 여러가지내용을 한번에 볼수있다. 흠 위젯창 같은 느낌이랄까. (기본으로 주가 관련 내용과 날씨 그리고 기본 알림 내용이 설정되있다.)
이 알림창 사용법은 선택이 가능하다.
설정 > 알림 메뉴로 들어가면 이 알림 창에 관련된 모든 설정이 가능하다.
앱별로 서로 다른 알림창을 사용할수도있고,
알림센터에서 빼버릴수도 있고 쌓이는 목록 갯수 설정을 할수도 있고~ 잠금화면 알림에 넣을것인가도~ 설정이 가능하다.
알림스타일에서 보면 배너가 새로생긴 타입이고, 알림 이 기존 스타일의 파란 알림창이다.
(알림스타일 하단에 한국어 설명 두줄 왠지 나중에 정렬때문에 문구가 수정될 듯싶다. 미관상 별로인관계로 ㅎㅎ)
그담으로 Reminders ~ 흠 간단하게 스케쥴러 인데 제법 디테일 하다. 기존에 다이어리앱들이 다 꿀릴듯 싶은;;
난 무계획 이니까 쿨하게 이런건 패스 -_-;;
그리고 트위터 가 낼름 일반설정에 떡하나 붙어있다. (그나마다 트위터 앱을 설치해야 다 잘 될듯~
이 트위터도 안쓰니 패스 -_-; 아직 한글화도 안되어 있다.
그리고 사운드 설정~!!
먼가 바뀌긴한건가 싶었다. 괜한 스샷을찍었나 하던 찰나 옆에 직원분 꺼 빌려서 비교해보니
메일 / 보낸메일 캘린더 / 알림 에 대한 사운드를 직접 설정할수다 있도록 변했다는~!!!
..... 기본설정... pass
일반 설정 > 사진 부분이다.
Photo Stream automatically uploads new photos to iCloud and downloads them to all of your devices.
흠 니계정으로 등록된 기계로 찍은 건 다 iCloude 로 공유 된다. 머 대충 이런소리인듯.
촬영화면에 옵션이 생겼는데.. 격자 를 끄고 키는 기능~
이제 아이폰에 황금분할로 사진을 딱~ pass~
참, 음량 조절 + 버튼으로 촬영이 가능했다~
말나온김에 iCloud 는 현재는 비추라 실제로 모든 계정을 활성해 보진 않았지만~
mobile Me 에서 유료로 제공되던 내 핸드폰 추적 기능이 들어가 있다는 사실!!!!!!!
이말인 즉슨 이제 아이폰 잊어먹어도 찾을 만한 희망이 한줄기 생겼다는거~!!!!
새로 생긴 뉴스 가판대?
스토어에서 따로 구매해서 사용할수 있는듯하나 현재는 할수있는건 없다.
충격적이였던 것중에 하나 기존에 아이폰의 iPod 기능이 실제 아이팟 처럼 비디오와 음악으로 분리가 되어버렸다.
왜 분리한거지 ㅡ,.ㅡ;; 앱아이콘도 못생기고 ㅋ 두개로 써야돼고 구찮게 시리
업데이트하면서 보니 이제는 다운로드 설치 가 모드 다중적으로 이뤄진다.
이제 갑갑하게 기다릴 필요는 없을듯~!
주말에 iOS 5.0 으로 내 아이폰을 업그레이드 해보았다.
설치 한뒤 소감은 제법 괜찮은 기능들이 들어가 있지만 역시 베타는 베타 일뿐.
안정적인 기존 4점대 버전을 사용하기를 강력 추천한다~
[설치방법]
준비물 : Mac 컴퓨터, iOS 5.0 beta ipsw (바로이전에 포스탕한 내용에 보면 각 디바이스별로 다운가능 dmg 받고 풀면 됨), 애플 개발자 계정, 업그레이드할 iOS 디바이스 (일단 테스트 기기로 등록된 기기만가능), xcode, iTuns 10.5 beta
1 . 모든 준비물이 갖춰졌다면~ xcode 를 실행.
2. 시작 메뉴에서 아무거나 골라도 되지만 맨위에있는 Create New xcode project 를 선택.
3. 새프로젝트를 선택하면 처음에 템플릿 선택창이 뜨는데, 이건그냥 무시하고 위에 메뉴중에 Window > Organizer 를 클릭~!.
4. 이미 테스트기기로 등록 했다면, 케이블로 디바이스를 맥에 연결하면 아래와 같은 화면을 확인할수 있다.
5. Software Version 에 선택바를선택하여 other file 인가? 선택을하면 ipsw 파일을 불러올수 있다. 이때 받아둔 디바이스용 5.0 파일을 선택 해주면 그냥 쭉 업데이트가 진행된다.
[주의점]
- 위의 내용은 iphone 3GS만 가지고 해본 거라 모든 디바이스에 실제로 해보진 않았지만 다 똑같을거라 예상됨;;; (책임회피)
- 일단 업데이트 되면 기존에 iTuns 로는 기기 인식이 안됨.
- 4 점대로의 복구.. 시도해보진 않았지만 일단은 안된다고 알려짐(물론 가능한 방법이 있다는~!! 4.3대 ipsw를 구해서 그거로 위와 같은 방식대로 restore 한다거나 하는등의 방법)
- 일단은 베타인터라 버벅대는게 제법 많이 느껴짐.
- 그냥 기존에 4점대 버전 사용하기를 추천 -ㅅ-;;;