Notes and Known IssuesThe following issues relate to using iOS SDK 7.0 to develop code.Address BookNotesThe classes in the AddressBookUI framework now explicitly disallow subclassing. For apps linked against the iOS 7 SDK, attempting to initialize a subclass of one of these classes returns nil. For apps linked against older SDKs, the only behavior change is a warning logged to the console.As of Seed 4, privacy support for the AddressBookUI framework is reenabled for apps linked against the iOS 7 SDK. Apps linked against older SDKs are not changed. If your app uses any of the Address Book view controllers, you should verify that it still behaves as expected.AirDropNotesAirDrop in iOS 7 Seed 2 or later is not compatible with AirDrop in iOS 7 Seed 1.Contacts Only support requires that:You are logged in to iCloud.The sender and receiver have each other’s Apple ID email addresses in Contacts on their devices.Fixed in Seed 5Contact Only currently requires that you have an active Internet connection.The App Store should support the ability to ﬁnd an app capable of opening a received document based on the document’s Uniform Type Identiﬁer (UTI). Currently, just a blank screen is displayed.AV FoundationNotesAVCaptureSession now uses your app’s AVAudioSession by default.Core AnimationNotesWhen 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 ﬁrst 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.ExchangeNotesIn Seed 4 and later, the Exchange DeviceIdentiﬁer has been changed back to the behavior of iOS 6 where it uses the serial number.FontsNotesNew font line heights were introduced in Seed 4. If you had manually aligned your font in earlier seeds, it may move slightly up vertically in later seeds.FoundationNotesAn NSMetadataQuery with ubiquitous scope can now use kMDItemContentTypeTree in predicates.For example:NSPredicate *p = [NSComparisonPredicatepredicateWithLeftExpression:[NSExpressionexpressionForKeyPath:@”kMDItemContentTypeTree”]rightExpression:[NSExpressionexpressionForConstantValue:@”public.rtf”]modifier: NSAnyPredicateModifiertype:NSLikePredicateOperatorTypeoptions:0];When called on results returned by queries with ubiquitous scopes, -[NSMetadataItemvalueForAttribute:NSMetadataItemDisplayNameKey] now produces the same value as –[NSURL getResourceValue: forKey: NSURLLocalizedNameKey], matching nonubiquitousqueries.iCloudNotesIf you use iCloud Keychain with recovery, you may see a dialog indicating recovery has been disabled due to a server change. This is intentional. To reenable functionality, follow the instructions in the notiﬁcation. If you see multiple alerts or observe issues with reenabling recovery, please ﬁle a bug report.iCloud Keychain in iOS 7 Seed 3 or later is not backward compatible with iOS 7 Seed 2 or OS XMavericks Seed 2.If you had iCloud Keychain and/or Keychain Restore enabled from iOS 7 Seed 2, both features are disabled upon updating to iOS 7 Seed 3 or later.After updating to iOS 7 Seed 3 or later, go to Settings > iCloud > Keychain and reenable iCloudKeychain on your devices.See OS X v10.9 Release Notes for more details.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 of Find My iPhone, sign out of iCloud, erase the device, or reactivate the device after an erase. It’s important to do one of the following before transferring a device to a new user:Sign out of iCloud.Turn of Activation Lock in Settings > iCloud > Find My iPhone.Fixed in Seed 5Voice Memos are not restored from iCloud Backups.Users in Switzerland, France, Spain, Germany, Poland, Finland, and possibly some other countries, will be unable to restore their keychains using phone number validation.Known IssuesPassword ﬁelds are not displayed in alert views for apps in landscape (for example, Game Center authentication or In-App purchase). Text entry still works, though you can’t see what you are typing.MapKitNotesIf the calls to renderInContext on the layer backing an MKMapView are made of 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.MediaNotesiOS now remembers the last used media app across reboot and app crashes. Media apps that can receive remote control events should be prepared to be launched in the background and potentially receive a remote control event to begin playback. Additionally, it’s important that media apps monitorand handle the media server reset event, since the media app may receive a remote request to resume playback after a reset. Notiﬁcations to monitor these media server events are available inAVAudioSession and proper handling is described in General recommendations for handlingkAudioSessionProperty_ServerDied.Multipeer ConnectivityNotesMany updates to the MCSession APIs are included in this seed. The APIs now function as they were presented at WWDC. Major changes and enhancements include:The following new method on MCSession has been implemented:– (NSOutputStream *)startStreamWithName:(NSString *)streamName toPeer:(MCPeerID*)peerID error:(NSError **)errorThis delegate method has been implemented:– (void)session:(MCSession *)session didReceiveStream:(NSInputStream *)streamwithName:(NSString *)streamName fromPeer:(MCPeerID *)peerIDThe following new method on MCSession has been implemented:– (NSProgress *)sendResourceAtURL:(NSURL *)resourceURL withName:(NSString*)resourceName toPeer:(MCPeerID *)peerID withCompletionHandler:(void(^)(NSError*error))completionHandlerThe delegate method to start receiving a resource from remote peer has been implemented as:– (void)session:(MCSession *)session didStartReceivingResourceWithName:(NSString*)resourceName fromPeer:(MCPeerID *)peerID withProgress:(NSProgress *)progressThe delegate method to ﬁnish receiving a resource from remote peer and save the content in atemporary location is implemented as:– (void)session:(MCSession *)session didFinishReceivingResourceWithName:(NSString*)resourceName fromPeer:(MCPeerID *)peerID atURL:(NSURL *)localURL withError:(NSError *)errorNote: The app is responsible for moving the ﬁle to a permanent location within its sandbox.MCAdvertiserAssistant is a convenience class for implementing an Advertiser, which handles invitations and connections to an MCSession.MCSession has a new initWithPeer: method.sendResource has added “with” to the completionHandler.The timeout has been removed from connectPeer:withNearbyConnectionData.For more information on these APIs, watch the video for WWDC 2013 Session 708, “NearbyNetworking with Multipeer Connectivity.”MultitaskingNotesAVAudioSession can no longer become active by apps in the background that wake due toBackground Fetch, Background Transfers, and Remote Notiﬁcation events.The policy for the task completion API has changed back to match the iOS 6 behavior, but the time limit for task completion has decreased from 10 minutes in iOS 6.NetworkingNotesThe cellular fallback technology present in previous seeds has been removed as of Seed 5.Two low-level networking APIs that used to return a MAC address now return the ﬁxed value02: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 identiﬁers suchas -[UIDevice identifierForVendor]. This change afects all apps running on iOS 7.Objective-C RuntimeNotesDue to changes in how the isa ﬁeld is implemented, *self may change during enumeration (forexample, if the container is retained).Workaround: When implementing countByEnumeratingWithState, do not set state->mutationsPtr = self.PassbookNotesAs of iOS 7 Seed 4, Passbook has added support for the major and minor ﬁelds to better match therest of the iBeacon ecosystem. The new major and minor keys are independently variable optionalalongside proximityUUID (required) in each dictionary in the beacons array.In previous versions of the iOS SDK, Passbook did not validate the back ﬁelds on passescompletely. The validation rules have not changed, but validation is now including back ﬁelds.Please check the console log for additional logs.As of iOS 7 Seed 3, PKPassLibraryDidCancelAddPasses is a new status code in thePKPassLibraryAddPassesStatus enum. It signiﬁes that the user tapped Cancel in an add-passesalert.PhotosNotesUpon upgrading from an earlier seed, photo thumbnails in the Photos app will not appear for a shortwhile.SafariFixed in Seed 5Upgrading to iOS may reset Safari’s settings to their default values.SecurityNotes-[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 bereturned the UDID. Instead, -[UIDevice uniqueIdentifier] will return a 40-character stringstarting with FFFFFFFF, followed by the hex value of -[UIDevice identifierForVendor]. It isimportant to consider how this will afect existing apps. Consider submitting updates that nolonger access the UDID.iOS now requests user consent for apps to use audio input on all iOS 7 devices. For devices sold inChina, iOS will also request user consent for apps to use the camera hardware. The operatingsystem will present the consent alert when you set the category of the instantiatedAVAudioSession. The AVAudioSession categories 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 wherecamera 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 identiﬁer (-[UIDevice identifierForVendor]).SetupFixed in Seed 5The setup assistant may crash when setting up a new device with an existing email address.SiriNotesThis seed includes development versions of new male and female Siri voices for U.S. English, French,and German.SocialNotesThrough iOS 6, when using TWTweetComposeViewController and SLComposeViewController(the latter only for Twitter and Weibo, but not Facebook), if the caller supplies acompletionHandler, the supplied completionHandler is responsible for dismissing the viewcontroller. As of iOS 7, if the app links against the iOS 7 SDK, the view controller will dismiss itselfeven if the caller supplies a completionHandler. To avoid this, the caller’s completionHandlershould 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 LegacySDK in iOS Simulator, you will not be able to use Twitter features: attempting to sign in to Twittervia the Settings pane will fail, and Twitter.framework will not work correctly. If you need to testTwitter features, you will need to choose either an iOS 6.1 or iOS 6.0 Simulator run destination, oryou can test with iOS 5.x on a device.SpringboardNotesActive touches are no longer canceled when the user takes a screenshot.Dynamic wallpaper is not available on iPhone 4.Sprite KitNotes+[AVPlayer playerWithPlayerItem:] returns an AVPlayer object, but the current item will returnnil if the player was created on another thread.StoresFixed in Seed 5Some iPhone 4 devices are unable to download content from the App Store and the iTunes Store.Known IssuesApp downloads can get stuck in the “Waiting” state.Workaround: Reboot your device once or twice to resolve the issue and allow subsequent downloadsto continue.UIKitNotesBefore Seed 4, the snapshot API (snapshotView andresizableSnapshotViewFromRect:withCapInsets:) would defer taking the snapshot if the viewhad never been committed or had been added to the view hierarchy in the current transaction. Thisbehavior has changed.Snapshots now always represent the current, committed state of the view. Attempting to snapshota view that has never been committed logs a message and now returns nil.Snapshotting methods have been updated and now take an argument: afterUpdates. When set toYES, this instructs the snapshot to wait until all pending changes to the hierarchy have beencommitted. To maintain the pre-Seed 4 behavior, pass NO and the snapshot will capture what iscurrently on screen. See UIView.h for more details.When there isn’t enough room in the navigation bar layout for the full text of the back button title,the navigation bar will substitute a generic short back title (in English, “Back”). If even that string istoo long, the bar will show the back indicator chevron with no title.+[UIPasteboard pasteboardWithName:create:] and +[UIPasteboardpasteboardWithUniqueName] now unique the given name to allow only those apps in the sameapplication group to access the pasteboard. If the developer attempts to create a pasteboard with aname that already exists and they are not part of the same app suite, they will get their own uniqueand private pasteboard. Note that this does not afect the system provided pasteboards, general,and ﬁnd.Starting with Seed 2, apps default to using the new view controller-based status bar managementsystem. To opt out of this, add a value of NO for theUIViewControllerBasedStatusBarAppearance key to your Info.plist.When using Auto Layout to position a UIButton, if you set the content compression resistance orcontent hugging priority to minimum, the button will have ambiguous layout.Workaround: Don’t use a content compression resistance or content hugging priority of less than2 for UIButton.UIScreenEdgePanGestureRecognizer allows you to perform actions in response to swipes overthe edge of the screen using the same heuristics that the system uses for its own gestures. Use thisif you have a navigation semantic of your own that doesn’t use UINavigationController butshould include this gesture (e.g., Safari).This gesture recognizer has a property that describes the edges on which it’s active. UIRectEdge isa new enum type that this property and -[UIViewController edgesForExtendedLayout] canshare. UIRectEdge replaces UIExtendedEdge, which will be removed. The members of both havethe same values. Use Xcode to replace all instances of “UIExtendedEdge” in your project with“UIRectEdge”.UIButtonTypeInfoLight, UIButtonTypeInfoDark, and UIButtonTypeDetailDisclosurebuttons all look the same.Blurred layers are not available on iPhone 4.Parallax is not available on iPhone 4.Letterpress text is not available on iPhone 4.Fixed in Seed 5Your app’s UI may move slightly after using a media player in landscape mode.Known IssuesPassword ﬁelds are not displayed in alert views for apps in landscape (for example, Game Centerauthentication or In-App Purchase). Text entry still works, though you can’t see what you are typing.WeatherNotesWeather conditions are not animated on iPhone 4.WebKitNotesPreviously, when the viewport parameters were modiﬁed, 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, youended up with a computed viewport of width=device-width, initial-scale=1.0.In iOS 7, this has been addressed. Now you end up with with a computed viewport of initialscale=1.0.Previously, when using , thescale could be incorrect after rotation.Now, if a user has not scaled the page explicitly, the page is restored to its initial scale. Also, thecurrent 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 beingscaled down 50%. This issue can also occur with any image to be scaled that is larger than itscontainer and that uses either the background-size property or the -webkit-background-sizeproperty. This issue afects both native apps that display web content and web pages viewed inSafari for iPhone.The background CSS shorthand property now resets the value of the background-size property toauto when background size is not speciﬁed. This new behavior is per the CSS spec, and the oldbehavior 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 propertyafter the background shorthand property in the CSS stylesheet for the web content beingdisplayed.Web apps and web clips created prior to Seed 4 will not stay in folders across reboot.Workaround: Delete the old web app or web clip and recreate it in this seed by loading the contentin Safari, tapping the Action button, and then “Add to Home Screen.”Wi-FiNotesSeed 4 and later include changes to AWDL such that technologies that use it—such as AirDrop and theMultiPeerConnectivity APIs—will not work properly with older seeds.
As the iOS 7 get closer to its official release date, Apple has just released iOS 7 beta 5 for the iPhone, iPad, iPad mini and iPod touch and has also released the full change log. Apple has also posted the complete iOS 7 beta 5 change log that includes a list of all of the software updates the company managed to pack into its latest beta OS.