Apple and others, like Google, LinkedIn, and Path, now know that privacy is synonymous with users’ information, and the iDevice-maker is finally attempting to rights its wrongs by requiring user permission in iOS 6 before apps can access any sensitive particulars.
Congress, regulatory bodies, and consumer advocates alike became aware earlier this year that apps uploaded data—such as entire contact lists—to their servers without notifying or even asking for permission from users first. Apple responded to the uproar in February when a representative said future software releases would require explicit user approval.
According to the “Security” section of the release notes:
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.
There are APIs available to allow developers to set a “purpose” string that is displayed to users to help them understand why their data is being requested.
There are changes to the EventKit and Address Book frameworks to help developers with this feature..
Apple’s iOS 6 preview launched during the opening keynote of the Worldwide Developers Conference. It is now in beta for developers but will release to the public this fall.
The full release notes are below.
- Path deletes users’ stored address book data, opt in update released. CEO apologizes
- Apple in court: iPhone data collection, Samsung/iPad patent case, & double iTunes billing
- Will your iOS device get all of the new iOS 6 features? Here’s the official word
OS SDK Release Notes for iOS 6 Notes and Known Issues The following issues relate to using the 6.0 SDK to develop code.Apple TV 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. 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. 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. Bonjour The NSNetService class 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 kDNSServiceInterfaceIndexAny in the following API’s will not include P2P interfaces by default. To include P2P interfaces, you must now set the kDNSServiceFlagsIncludeP2P flag when using kDNSServiceInterfaceIndexAny or set the interfaceIndex to kDNSServiceInterfaceIndexP2P. The affected APIs are: DNSServiceBrowse DNSServiceRegister DNSServiceResolve DNSServiceRegisterRecord DNSServiceQueryRecord Game Center 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. The Game Center friend request UI may hang for up to 10 seconds, and may become unresponsive. Quitting and relaunching the application will resolve this issue. 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. Turn timeouts in turn-based games will be 1/1000 of what is specified when calling the endTurnWithNextParticipants:turnTimeout:matchData: completionHandler: method of GKTurnBasedMatch. This will be fixed in a future seed. When running Game Center-enabled apps in iOS Simulator, developers logging into Game Center are interacting with the live production server anddata. 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. iCloud 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. The setSortDescriptors: method of NSMetadataQuery is 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. 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 If you erase restore your device, you will need to reboot your device in order to send attachments through iMessage. If you change your password for iMessage or FaceTime, you will have to toggle these services off and on in settings. For iMessage, toggle the Settings > Messages > iMessage switch. For FaceTime, toggle the Settings > FaceTime > FaceTime switch. IOKit SpringBoard/BackBoard may crash during a phone call if the screen fades to black when using speakerphone or headphones. iTunes iTunes 10.6.3 is required for iOS SDK 6.0. 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. Maps 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. Movie Player 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. Security 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. There are APIs available to allow developers to set a “purpose” string that is displayed to users to help them understand why their data is being requested. There are changes to the EventKit and Address Book frameworks to help developers with this feature. Simulator 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 SKStoreProductViewController object 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. 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. Social Weibo shows up in the Settings app only if a Chinese keyboard is enabled. In order to access Facebook accounts via the Accounts framework in your app, you will need to include the ACFacebookClientAccessInfo key in your app’s Info.plist file. The contents of this key are a dictionary of additional keys, an example of which is shown here: ACFacebookClientAccessInfoACFacebookAppIdKey Your Facebook App ID ACFacebookAppVersionKey 1.0 ACFacebookPermissionGroupKey read_write ACFacebookPermissionsKeyFacebook Permission KeysThe values you specify for the ACFacebookPermissionsKey key are the permissions (defined by the Facebook service) that you are requesting. The values of the ACFacebookPermissionGroupKey key can be read, write, or read_write. Passbook An airplane icon appears between the origin and destination for all transit types. SpringBoard sometimes suspends ShoeboxUIService while ingesting passes. The workaround is to try ingesting the pass again. UIKIT In 5.1 the UISplitViewController class 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 UIPopoverController instance provided by the delegate, will continue to work as before. If the gesture would be insupportable in your app, setting the presentsWithGesture property of your split view controller to NO disables the gesture. However, disabling the gesture is discouraged because its use preserves a consistent user experience across all apps. In iOS 6, changes have been introduced so that you no longer need to set a delegate and implement a method for Single-Finger and Single-Tap gesture recognizers, in an effort to make them work well with the UIControl objects. In iOS 6 and later, the UIWebView class paints its contents asynchronously. Developers trying out Auto Layout with UIScrollView objects might notice jitters in the scroll indicators on devices with Retina displays. In iOS 6, the shouldAutorotateToInterfaceOrientation: method of UIViewController is deprecated. In its place, you should use the supportedInterfaceOrientations method. If the view controller does not override the supportedInterfaceOrientations method, UIKit obtains the default rotations from the app delegate or the app’s Info.plist file. If you implement only the shouldAutorotateToInterfaceOrientation: method in your view controller, UIKit calls that method several times in succession to derive the equivalent information that would be provided by the supportedInterfaceOrientations method. This is strictly for compatibility. Apps are encouraged to switch over to the new API and take advantage of the many internal improvements that are present. This new behavior is disabled by default. For an app to test the new API, you need to specify the UIApplicationSupportedInterfaceOrientationsIsEnabl ed launch argument with the value YES when launching your app. This can be done in Xcode’s project schema editor.