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, 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.
For more information on creating extensions, see App Extension Programming Guide.
Touch ID Authentication
Your app can now use Touch ID to authenticate the user. Some apps may need to secure access to all of their content, while others might need to secure certain pieces of information or options. In either case, you can require the user to authenticate before proceeding. Use the Local Authentication Framework (
LocalAuthentication.framework) to display an alert to the user with an application-specified reason for why the user is authenticating. When your app gets a reply, it can react based on whether the user was able to successfully authenticate.
For more information, see Local Authentication Framework Reference.
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.
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.
For more information, see Photos Framework Reference.
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.
For more information see AV Foundation Framework Reference.
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 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.
For more information, see Scene Kit Framework Reference.
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 Audio Engine
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.
For more information, see AV Foundation Framework Reference.
Health Kit Framework
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.
For more information, see Home Kit Framework Reference.
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 (
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.
For more information about the classes of this framework, see Cloud Kit Framework Reference.
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.
For more information, see the Document Picker Programming Guide.
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.
For more information, see Handoff Programming Guide.
Unified Storyboards for Universal Apps
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.
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.
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:
UITraitCollectionclass 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
UITraitEnvironmentprotocol (such as
UIView) own a trait collection. You can retrieve an object’s trait collection and perform actions when those traits change.
UIImageAssetclass 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
UIImageclass has been modified to work with image assets.
Classes that support the
UIAppearanceprotocol can customize an object’s appearance based on its trait collection.
UIViewControllerclass 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
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.
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
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.
For more information, see Adopting Modern Objective-C.
AV Foundation Framework
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.
For information about the classes of this framework, see AV Foundation Framework Reference.
AV Kit Framework
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.
For information about the classes of this framework, see Core Image Reference Collection.
Core Location Framework
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.
For information about the classes of this framework, see Core Location Framework Reference.
The Foundation framework (
Foundation.framework) includes the following enhancements:
NSFileVersionclass provides access to past versions of iCloud documents. These versions are stored in iCloud, but can be downloaded on request.
NSURLclass supports storing document thumbnails as metadata.
NSMetadataQueryclass 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.
GKSavedGameclass 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
GKPlayerobjects to identify players. Replacement properties and methods have been added that take
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.
For information about the classes of this framework, see iAd Framework Reference.
Media Player Framework
Two Media Player framework (
MediaPlayer.framework) classes are extended with new metadata information.
For information about the classes of this framework, see Media Player Framework Reference.
Sprite Kit Framework Changes
The Sprite Kit framework (
SpriteKit.framework) adds many new features:
SKShapeNodeobject can specify textures to be used when the shape is either stroked or filled.
SKEffectNodeclasses include support for custom rendering. Use the
SKUniformclasses to compile an OpenGL ES 2.0-based fragment shader and provide input data to the shader.
SKSpriteNodeobjects can provide lighting information so that Sprite Kit 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.
SKFieldNodeclass 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.
SK3DNodeclass 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
SKViewclass 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 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
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.
UISearchControllerclass replaces the
UISearchDisplayControllerclass for managing the display of search-related interfaces.
UISplitViewControllerclass 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.
UINavigationControllerclass has new options for changing the size of the navigation bar or hiding it altogether by using gestures.
UIVisualEffectclass enables you to integrate custom blur effects into your view hierarchies.
UIPresentationControllerclass lets you separate the content of your view controllers from the chrome used to display them.
UIPopoverPresentationControllerclass handles the presentation of content in a popover. The existing
UIPopoverControllerclass uses the popover presentation controller to show popovers on the screen.
UIPrinterPickerControllerclass 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
For information about the classes of this framework, see UIKit Framework Reference.
Video Toolbox Framework
The Video Toolbox framework (
VideoToolbox.framework) includes direct access to hardware video encoding and decoding.
The following APIs are deprecated:
UIApplicationmethods and properties for registering notifications. Use the new API instead.
UIViewControllermethods 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.
Methods and properties in Game Kit that use player identifier strings.
For a complete list of specific API deprecations, see iOS 8.0 API Diffs.
iOS SDK Release Notes for iOS 7.0
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.
For more information and additional support resources, visit http://developer.apple.com/programs/ios/.
To report any bugs not mentioned in the Notes and Known Issues section, use the Apple Bug Reporter on the Apple Developer website (http://developer.apple.com/bugreporter/). Additionally, you may discuss these issues and iOS SDK 7.0 in the Apple Developer Forums: http://devforums.apple.com. To get more information about iCloud for Developers, go to http://developer.apple.com/icloud.
Notes and Known Issues
The following issues relate to using iOS SDK 7.0 to develop code.
“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.
“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.
Support for Car Display will be provided once compatible systems are available.
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.
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.
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.
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.
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.
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 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.
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
+[MKMapCamera cameraLookingAtCenterCoordinate:fromEyeCoordinate:eyeAltitude:]may result in the wrong map heading being chosen.
+[MKMapSnapshot pointForCoordinate:]returns the wrong result for nonsquare snapshots.
Silent pushes will always wake the device.
Currently, there is no API that lets you inspect the settings controlling your app’s background behavior.
MPMediaPickerController has been disabled for this seed. It will immediately return as if the user canceled the selection.
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
kSCNetworkReachabilityFlagsIsWWANto 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 the
kSCNetworkReachabilityFlagsIsWWANis 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.
CFHTTPStream, or similar APIs, set the
kCFStreamPropertyNoCellularproperty to true on the CF object before connecting.
[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
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 background downloads that use HTTP basic or digest authentication will prompt the user with authorization alerts (
NSURLConnectionDelegate callbacks for
willSendRequestForAuthenticationChallenge are not called correctly).
Nike + iPod
The Nike + iPod app is not included in this seed.
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.
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 may become unusable after the user creates a new list.
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.
addToReadingListAPI 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.
-[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
AVAudioSessionCategoriesthat will present the alert are
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.
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 (
Changing the Require Passcode time setting after a restore from backup will require a reboot for the change to take effect.
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.
The new Siri voices are not in this seed.
Up through iOS 6, when using
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 a
completionHandler. To avoid this, the caller’s
completionHandler should not dismiss the view controller.
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.
Active touches are no longer canceled when the user takes a screenshot.
Dynamic wallpaper is not available on iPhone 4.
When restoring from an iCloud backup on a device with hundreds of apps, Springboard may crash repeatedly.
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.
+[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.
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.
UIPickerViewwith custom views doesn't show the views in the selection indicator.
UIRefreshControland the associated table view are hidden under the nav bar when
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.
UIImagePickerControllerdoes not show a live preview when using custom overlays.
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.
onTintColorsis always green irrespective of what it’s set to.
The title of the
UIRefreshControlappears below the navigation bar.
Personal Hotspot (Internet Tethering) will not work if this seed of the iOS SDK 7.0 is installed.
The VoiceMemos app is not available in this seed.
Maps does not work with VoiceOver.
Siri and VoiceOver do not always work together properly.
Reminders does not work with VoiceOver.
Weather conditions are not animated on iPhone 4.
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.
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-sizeproperty or the
-webkit-background-sizeproperty. This issue affects both native apps that display web content and web pages viewed in Safari for iPhone.
backgroundCSS shorthand property now resets the value of the
autowhen 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-sizeproperty or the
-webkit-background-sizeproperty after the
backgroundshorthand 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.
오늘 점심때 기사를 보니 팟캐스트가 사라졌다!!!
라고 기사가 뜬걸 보고 포스팅을 아주 간만에 하기로 마음먹음;; (나중에 사실이지만 기자나 나나 하나씩 모르고있었다는 ㅋ)
현재 iOS6 버전 개발자 버전 업데이트 적용되어있지만 기사내용과는 다르게 팟캐스트는 여전히 음악에 같이 존재한다.
베타 설치후 음악파일아니 팟캐스트 파일이 없을경우 하단 탭메뉴가 보이지 않는다.
아래 스샷을 보면 아주 떡하니 팟캐스트 메뉴가 보인다... (앱스토어에서 podcast 로 검색하면 새로운 앱이 있으나.. 버그가 좀 있지만;;)
iOS6에서 팟캐스트 사용하는방법!
우선~ 아이폰상에서 iTunes 로는 국내 팟캐스트 다운이 불가능한터라
간만에 iTunes 로 팟캐스트를 다운받고 동기화를 하면~ 해결;;
간단하다.. (새 앱을 받아 새앱에서 팟캐스트 다운은 더 간단;; 사소한 버그 몇개를 제외하고는 편한듯 )
음악파일.. 팟캐스트 파일이 없으니 음악 앱을 실행해도 아무런 메뉴도 보이지 않았던 것일뿐~
해보진 않았지만 미국 팟캐스트 하나만 받아봐도 ( iTunes 로) 해결될듯~
디자인이 화이트 톤으로 많이 깔끔해진 모습~
플래이 화면도 디자인 변경된 모습~
beta2 업데이트 를 해봐도 여전히 팟캐스트는 음악 앱 안에 포함되어있었다.
근데 기사내용을 보니 심지어 팟캐스트앱 스샷 까지 있는게 아닌가.. 자세히보니 기존 iOS 기본 앱과 디자인도 좀 다르고.. 뭔가 어눌한느낌이 들어 검색해봤더니
애플에서 만든 podcast 앱이 있더라는~
즉 베타2 로 업글 하고 쓰면 기본에는 없지만 앱스토어에서 다운 받으면 기존 음악앱에서도 팟캐스트가 빠진다~
(승인여부를 팝업으로 묻는다)
기존에 받았던 팟캐스트도 앱쪽으로 다 들어가 있다~
문제 새 팟캐스트앱이.. 인터페이스나 기본 사용 자체가 어눌하다는점.. 버그가 많다....
앱지우자니.. 다운받은 팟캐스트가 삭제된다니;; 참는수밖에.
단, 앱의 경우는 라이브러리(기존아이튠즈 팟캐스트 카테고리) 로 바로 받을수 있다..
ios 개발자계정을 가지고 있다면 ~!
5.0 베타버전을 다운로드 할수있다
아마 개발자 계정을 이미 가지고 있었다면 메일로 ios5 에 대한 메일을 이미 받았을것이다.
해당 링크로 가서~ 로그인 한뒤에 아래 빨간색 네모 부분의 ios5 beta 를 클릭하면
각 디바이스별로 베타 버전을 확인할수있다~
베타버전을 다운받아 설치할수 있지만~! dmg 파일 (맥전용) 이고 실제 앱개발자가 아니라면(초보자라면) 정식버전을 기다리는것이 가장 현명할듯~!
(오늘은 맥을 안가져온터라 테스트불가;; 몇일내로 설치해보고 스샷 올릴지도 ~!)
iCloud Storage APIs enable your apps to store user documents and key value data and wirelessly push any changes to all your user's computers and devices at the same time — automatically. See how iCloud can help you create compelling new functionality in your apps.
Notification Center provides an innovative way to easily display and manage your app notifications without interrupting your users. Notification Center in iOS 5 builds on the existing notification system, so your existing local and push notifications just work. Provisioning of push notifications is now built right into Xcode making it even easier to implement.
Publish the latest issues of your magazines and newspapers directly to Newsstand, the new folder on the Home Screen. Newsstand Kit provides everything you need to update new issues in the background, so you can always present the most recent cover art. Apps built for Newsstand use In-App Purchase subscriptions, making it easy for users to manage their auto-renewable subscriptions. And it's now possible to provision your app for In-App Purchase within Xcode.
Automatic Reference Counting
Automatic Reference Counting (ARC) for Objective-C makes memory management the job of the compiler. By enabling ARC with the new Apple LLVM compiler, you will never need to type retain or release again, dramatically simplifying the development process, while reducing crashes and memory leaks. The compiler has a complete understanding of your objects, and releases each object the instant it is no longer used, so apps run as fast as ever, with predictable, smooth performance.
Tweet directly from your apps using the new Tweet sheet. It provides all of the features available to built-in apps, including URL shortening, attaching current location, character count and hosting photos on Twitter. And if your app is a Twitter client, it's easy to tie into the single sign-on service using the Twitter APIs. It's even possible to migrate existing accounts to iOS.
Layout the workflow of your app using the new Storyboards feature built into the design tools of Xcode. Created for apps that use navigation and tab bars to transition between views, Storyboards eases the development by managing the view controllers for you. You can specify the transitions and segues that are used when switching between views without having to code them by hand.
Introduced in iOS 4.2, AirPlay streams video, audio and photos to Apple TV. With iOS 5, it's now possible to wirelessly mirror everything on your iPad 2 to an HDTV via Apple TV. Your apps are mirrored automatically. With additional APIs your app can display different content on each of the HDTV and the iPad 2 screens. In iOS 5, apps built with AV Foundation can now stream video and audio content through AirPlay, and AirPlay now supports encrypted streams delivered via HTTP Live Streaming.
Create amazing effects in your camera and image editing apps with Core Image. Core Image is a hardware-accelerated framework that provides an easy way to enhance photos and videos. Core Image provides several built-in filters, such as color effects, distortions and transitions. It also includes advanced features such as auto enhance, red-eye reduction and facial recognition.
Game Center is taking multi-player gaming on iOS one step further with the addition of turned-base game support. With turn-based games, players can play when they want and Game Center will manage each turn for them. Game Center will automatically send the next player a push notification via Notification Center and manage multiple game sessions. Other developer additions to Game Center include, adding players to existing multi-player games, displaying achievement notification banners, and support for distinct icons for each leaderboard.
It's now even easier to develop great looking games that take advantage of the latest iOS hardware. GLKit is a new high-level framework that combines the best practices of advanced rendering and texture techniques with the latest OpenGL ES 2.0 features. It's optimized to take advantage of hardware accelerated math operations, so you get the best performance without all the work. iOS 5 SDK also includes new Apple-developed OpenGL ES extensions designed specifically for advanced game developers. And the new OpenGL ES debugger in Xcode allows you to track down issues specific to OpenGL ES in your code.
iMessage is a new messaging service that works between all iOS 5 users over Wi-Fi and 3G. iMessages are automatically pushed to all iOS 5 devices, making it easy to maintain one conversation across iPhone, iPad and iPod touch. In iOS 5 SDK, the Message sheet now supports the iMessage service, so you can start individual or group text conversations from within your app.
In addition to ARC, iOS 5 SDK includes several new instruments including time profiler with CPU strategy which gives you a new way to view time profiler data, as well as system trace, network activity and network connections instruments.
iOS 5 includes a host of features that give users the power, freedom, and flexibility to use their iOS devices without a Mac or PC. Expand the functionality of your apps and remove the need for users to access a PC. Take advantage of iCloud Storage to store documents and user data, so they are updated automatically and users can access them from all of their devices.
Now you can test your location-based features in your app without leaving your desk. You can now select from preset locations and routes within the iOS Simulator and pick a custom latitude and longitude with accuracy while you're running your simulated app.