iOS 6 Beta 2 Features And Changes
Only registered developers are allowed to view the changes in iOS 6 beta 2. But, I’ve taken the liberty of copying down Apple’s “Notes and Known Issues” document for the purpose of informing non-Apple Developers about the latest beta firmware:
Notes and Known Issues
The following issues relate to using iOS SDK 6.0 to develop code.
- When an app is in a fresh privacy state and tries to present a
ABNewPersonViewController, the user cannot dismiss that view controller properly even if they allow access to contacts. The user must force quit the app and relaunch.
- In some cases the screen may show the wrong resolution. Restart your Apple TV to return it to the correct resolution.
- Netflix videos may not resume where you left off.
- FIXED: Some videos may not resume after fast-forwarding or rewinding. Press the Menu button on the remote to back out and play the video again.
- FIXED: The Play/Pause button may not pause music that is playing in the background. Go to the Now Playing screen to pause music.
- The History list in the YouTube app gets cleared when you exit and reenter the app.
- Apple TV may be slow to respond while a download is in progress in the background.
- Apple TV may restart while using the Remote app.
NSNetServiceclass and CFNetService APIs do not include P2P interfaces by default. To browse, register, or resolve services over P2P interfaces, an app needs to use the Bonjour
DNSService*()APIs noted below.
- Setting the interfaceIndex parameter to
kDNSServiceInterfaceIndexAnyin the following API’s will not include P2P interfaces by default. To include P2P interfaces, you must now set the
kDNSServiceFlagsIncludeP2Pflag when using
kDNSServiceInterfaceIndexAnyor set the interfaceIndex to
kDNSServiceInterfaceIndexP2P. The affected APIs are:
- FIXED: Peer-to-peer connectivity will not work under certain network conditions, including devices being behind double-NAT topologies, connecting between AT&T and Verizon networks, or connecting with an international carrier.
- FIXED: The Game Center friend request UI may hang for up to 10 seconds, and may become unresponsive. Quitting and relaunching the app will resolve this issue.
- FIXED: Viewing the game invite or automatch UI inside your app may crash it when not in the Game Center Sandbox environment. Games using Sandbox will not be affected.
- FIXED: Turn timeouts in turn-based games will be 1/1000 of what is specified when calling the
GKTurnBasedMatch. This will be fixed in a future seed.
- FIXED: When running Game Center-enabled apps in iOS Simulator, developers logging into Game Center are interacting with the live production server and data.
- To work around this problem, developers working on new projects as well as projects that require iTunesConnect metadata should work on actual devices instead of the simulator. Developers who have published apps already in the App Store and who wish to develop using the simulator can use the new iOS 6 features; however, they must be aware they are interacting with live production players, scores and achievements.
- When creating a new Game Center account in-app on the iPad, the popover for selecting the month for your date of birth shows up with no content to select.
GKLocalPlayerhas been removed. Authentication will automatically commence when the completion handler is set.
- When creating an iCloud account, you can use any Apple ID as long as it is a full email address and not a MobileMe account. If you have a MobileMe account, you must move that account to iCloud. While Mobile Me will be available until Jun 30th, 2012, logging in with a MobileMe account is not supported in iOS 6. You can find more information at: http://me.com/move
- Provisioning profiles must be enabled for iCloud in the iOS Provisioning Portal. To enable a provisioning profile for iCloud, navigate to the App ID section of the iOS Provisioning Portal and configure your App ID for iCloud. After enabling the App ID for iCloud, regenerate your provisioning profiles to enable them for iCloud.
NSMetadataQueryis not supported.
- In iOS 6, files that are protected via Data Protection cannot be used with iCloud Storage APIs.
- File names are case-insensitive in OS X but case-sensitive in iOS. This can lead to problems when sharing files between the two platforms using iCloud. You should take steps on iOS to avoid creating files whose names differ only by case.
- FIXED: Setup Assistant will crash if a new account is created during initial setup. The account will actually be created, and the user can login and use it afterwards. The crash does not happen with existing accounts.
iMessage & FaceTime
- The Answer and Decline buttons are missing when receiving calls in landscape orientations.
- FIXED: If you erase restore your device, you need to reboot your device in order to send attachments through iMessage.
- FIXED: If you change your password for iMessage or FaceTime, you must toggle these services off and on again in settings.
- For iMessage, toggle the Settings > Messages > iMessage switch.
- For FaceTime, toggle the Settings > FaceTime > FaceTime switch.
- FIXED: SpringBoard/BackBoard may crash during a phone call if the screen fades to black when using speakerphone or headphones.
- iTunes 10.6.3 is required for iOS SDK 6.0.
- FIXED: Wi-Fi Sync with iOS 6 and iTunes 10.6.3 does not work when the device is locked and not connected to power. It can sometimes fail even when connected to power. In that case, rebooting the device may resolve the issue.
- When restoring from an iTunes backup, the device intermittently shows up as new device after rebooting. If that happens, set up the device as a “new device” when prompted to restore for the 2nd time. All data should have been restored correctly but sync settings including App arrangement in iTunes are lost.
- In iOS 6 and later, Map Kit is built on a new infrastructure hosted by Apple. Earlier iOS releases will continue to use Google’s service.
- API compatibility will be maintained (see known issues below).
- Maps are now supported in the Simulator.
- Map data will continue to evolve—only a limited amount of high resolution satellite imagery is currently available.
- If Maps is not running in the background, a “Maps cannot connect to the internet” error is displayed when it is launched from a 3rd party app.
- If Maps has not yet been launched, the current location does not show up when it is launched from a 3rd-party app.
- Routing apps that do not specify a coverage file during development will always be displayed in the Maps routing search results.
- Testing and debugging of coverage files for routing apps is only supported during development through the Xcode “Run” workflow. (You can specify the coverage file for a given Run scheme using the Options pane of the Run section of the scheme editor.) Apps that are archived and distributed (outside of the App Store) onto devices will not have access to the app’s coverage files.
- Maps does not zoom into the current location when launched from a 3rd party app.
- FIXED: After restoring videos from an iCloud backup, the video thumbnails for all titles display the same poster image (obtained from one of the titles in the list), as opposed to each displaying its own poster image.
- There are issues when adding and editing reminders in the Reminders app on iPhone devices:
- The Done button is missing when adding a new reminder.
- The app crashes when you tap the Edit button to edit a reminder.
- In iOS 5, signing a certificate with an MD5 signature is not supported. Please ensure that certificates use signature algorithms based on SHA1 or SHA2.
- In iOS 6, the system now protects Calendars, Reminders, Contacts, and Photos as part of Apple’s data isolation privacy initiative.
- Users will see access dialogs when an app tries to access any of those data types. The user can switch access on and off in Settings > Privacy.
- Developers can set a “purpose” string for each class of isolated data. iOS displays this string to users to help them understand why their data is being requested. These strings can be added using Xcode’s Project editor, in the Info tab. The relevant key names begin with the string “Privacy -“.
- There are changes to the Event Kit and Address Book frameworks to help developers with this feature.
- FIXED: The back button for navigation controllers on the Retina iOS Simulators does not render properly.
- The app delete confirmation alert panel takes a while to show up on the iOS Simulator.
- Tapping the buy button in the view of an
SKStoreProductViewControllerobject in iOS Simulator causes the app to crash.
- No privacy alerts are displayed in iOS Simulator for apps that access Photos, Contacts, Calendar and Reminders.
- Downloading in-app purchase hosted content in iOS Simulator is not supported.
- When attempting to play an MP3 sound in the Simulator, you will hear a popping sound instead.
- Using the iOS 5.1 SDK with the iPad (Retina) profile will result in a SpringBoard crash. The iOS 5.1 SDK works with all other profiles and the iPad (Retina) SDK works with the iOS 6.0 SDK.
- Ads of type
ADAdTypeMediumRectangledo not appear in iPad Simulator.
Shared Photo Stream
- User must go to Settings > iCloud to ensure that they receive Shared Photo Stream Notifications.
- In order to share a Photo Stream with iOS 6 beta, you must invite someone using their iCloud email address or they will not receive the invitation.
- Upgrading from iOS 6 beta 1 to beta 2 will cause your device to re-download all of your Shared Photo Streams.
- The Shared Photo Stream feature is set to OFF when updating from iOS 6 beta 1 to a later release. The default setting should be ON.
- Weibo shows up in the Settings app only if a Chinese keyboard is enabled.
ACAccountStoreis now deprecated. To access user accounts, please use the
requestAccessToAccountsWithType:options:completion:method.In the options parameter of this new method, pass
nilto access Twitter and Weibo accounts. To access Facebook accounts, pass a dictionary with the following keys (which are documented in
You should no longer add this dictionary to your app’s
Info.plistfile, as was required in beta 1.
- After restoring a device in iTunes or performing an “Erase All Contents and Settings”, the current wallpaper may not appear until the device is rebooted once.
- An airplane icon appears between the origin and destination for all transit types.
- FIXED: SpringBoard sometimes suspends ShoeboxUIService while ingesting passes. The workaround is to try ingesting the pass again.
- The “Description” field is now a required field for a Pass. All passes created without it will fail to validate and will not ingest.
- The Passbook database has been reset. You’ll need to add your passes again.
UISplitViewControllerclass adopts the sliding presentation style when presenting the left view (previously only seen in Mail). This style is used when presentation is initiated either by the existing bar button item provided by the delegate methods or by a swipe gesture within the right view. No additional API adoption is required to obtain this behavior, and all existing API, including that of the
UIPopoverControllerinstance provided by the delegate, will continue to work as before. If the gesture would be insupportable in your app, setting the
presentsWithGestureproperty of your split view controller to
NOdisables the gesture. However, disabling the gesture is discouraged because its use preserves a consistent user experience across all apps.
UIWebViewclass paints its contents asynchronously.
UIScrollViewobjects might notice jitters in the scroll indicators on devices with Retina displays.
UIViewControlleris deprecated. In its place, you should use the
- More responsibility is moving to the app and the app delegate. Now, iOS containers (such as
UINavigationController) do not consult their children to determine whether they should autorotate. By default, an app and a view controller’s supported interface orientations are set to
UIInterfaceOrientationMaskAllfor the iPad idiom and
UIInterfaceOrientationMaskAllButUpsideDownfor the iPhone idiom.
- A view controller’s supported interface orientations can change over time. Even an app’s supported interface orientations can change over time. The system asks both the topmost full screen view controller (typically the root view controller) for its supported interface orientations whenever the device rotates or whenever a view controller is presented with the full screen modal presentation style. Moreover the supported orientations are retrieved only if this view controller returns
shouldAutorotatemethod. The system intersects the view controller’s supported orientations with the app’s supported orientations (as determined by the
Info.plistfile or the app delegate’s
application:supportedInterfaceOrientationsForWindow:method) to determine whether to rotate.
- The system determines if an orientation is supported by intersecting the value returned by the app’s
supportedInterfaceOrientationsForWindow:method with the value returned by the
supportedInterfaceOrientationsmethod of the topmost fullscreen controller.
setStatusBarOrientation:animated:method is not deprecated outright. However it now works only if the
supportedInterfaceOrientationsmethod of the topmost full screen view controller returns
0. This puts the responsibility of ensuring that the status bar orientation is consistent into the hands of the caller.
- For compatibility, view controllers that still implement the
shouldAutorotateToInterfaceOrientation:method do not get the new autorotation behaviors. (In other words, they do not fall back to using the app, app delegate, or
Info.plistfile to determine the supported orientations.) Instead, the
shouldAutorotateToInterfaceOrientation:method used to synthesize the information that would be returned by the
requiresConstraintBasedLayoutclass method in your view and return
YESfrom your implementation. Methods are no longer called on any view controller that makes a full screen presentation over itself—for example, by calling
- You should make sure that your apps are not using these methods to manage the layout of any subviews. Instead, they should use the view controller’s
viewWillLayoutSubviewsmethod and adjust the layout using the view’s bounds rectangle.
- In iOS 6, the
UIViewControllerare now deprecated. If you were using these methods to release data, use the
didReceiveMemoryWarningmethod instead. You can also use this method to release references to the view controller’s view if it is not being used. You would need to test that the view is not in a window before doing this.
- FIXED: Calling any of the
NSStringdrawing methods without specifying a value for the
NSFontAttributeNameattribute is likely to throw an exception. The workaround is to set a value for the
NSFontAttributeNamekey before drawing or sizing an
- Setting values for the
shadowColorproperties of a
attributedTextproperty contains a valid attributed string is unsupported. Use the
NSShadowAttributeNameattribute of the attributed string to set the shadow instead.
NSTextAlignmentNaturalvalue is unsupported and will throw an exception when used with the
UILabelor supplied as the alignment parameter to the
UIViewhas been deprecated in this beta release. To achieve the same effect, use UIImage’s
resizableImageWithCapInsets:API and display the image with a
UIImageeffectively resizes images by tiling. As a performance optimization, it uses stretching rather than tiling when the user would not be able to tell the difference, like when a single column or row is being stretched. But in certain circumstances, one might want to actually stretch some region of an image. In iOS 6, the
resizableImageWithCapInsets:resizingMode:method allows the caller to specify a tiling or stretching resizing mode.
- There is a known issue with dictionaries when attempting to define a word in any language other than English or Japanese. When the reference library is presented, the user is presented with the option to download a dictionary, but that download may not begin. The user can tap outside the popover on an iPad or tap the Done button on the iPhone or iPod touch to dismiss the download request.
Safari & WebKit
- WebKit on iOS now supports the
- Note that because the specification is still at the Working Draft state, these methods have the
webkitprefix, so they are
- Note that because the specification is still at the Working Draft state, these methods have the
- The default app cache quota has been increased from 5MB to 25MB.
- The JPEG subsampling threshold was increased from 2 MP (megapixels) to 5 MP on all supported hardware except iPhone 3GS and iPod touch (4th gen).
- Support has been added for
<input type="file">tags in web forms. Users can upload existing photos and videos from their photo library or take a picture or video using the camera. Previously this form control was always disabled.
- With Safari 6.0 on OS X, developers can now use the Web Inspector (web development tool) with attached iOS devices and iOS Simulator. Developers can use the Web Inspector to debug Safari and the
UIWebViewclass in their own apps built and run from Xcode. This replaces the Debug Console banner in Safari.
- In iOS 6 and later, web data (SQL Web Storage and LocalStorage) from a
UIWebViewobject can be stored in a directory that will be backed up. To enable backing up this data, set the
YESin your app’s user defaults. This should be done only if your app relies on web content data that cannot be reloaded. If your
UIWebViewobject opens links to arbitrary web content, this key should be set to
NO. Toggling the value of this key will not preserve existing web view data.
- In iOS 6 and later, Safari no longer registers for the common
feed:RSS/ATOM scheme. Apps that can view those types of feeds are encouraged to register for that URL scheme.
- FIXED: In iOS 6 beta 1, Smart App Banners in Safari show App Store information for an app above web content. In this seed, the app launching UI and functionality portion of Smart App Banners is not available.
- Webkit no longer always creates hardware-accelerated layers for elements with the
-webkit-transform: preserve-3doption. Authors should stop using this option as a way to get hardware acceleration.
- FIXED: Users may notice that the key clicking sounds are skipped during fast typing.
- FIXED: Displaying a keyboard in a landscape orientation, then rotating the device to a portrait orientation results in a badly positioned keyboard. Dismissing the keyboard and redisplaying it in portrait mode should resolve the issue. The problem affects only iOS 6 beta 1 and will be fixed in subsequent release.
As always, stay tuned for more coverage on Apple, iOS 6 and future beta firmwares.