Full iOS 7 Beta 4 Changelog Posted

Full iOS 7 Beta 4 Changelog Posted

Earlier today Apple seeded iOS 7 beta 4 for iPhone, iPad and iPod touch
to registered developers. The release came a little bit late than we had
expected. That is because Apple’s developer center wasn’t up and
running. The company got it back online
yesterday and today it finally released iOS 7 beta 4 to developers. If
you’ve been wondering what’s new in this release, we have posted the
full iOS 7 beta 4 changelog down below. Check out the iOS 7 beta 4
changelog to see what improvements and enhancements have been made in
this particular release.

iOS 7 Beta 4 Changelog:

Notes and Known Issues

The following issues relate to using iOS SDK 7.0 to develop code.

Address Book Notes

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.



AirDrop 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.

Known Issues

Contact Only currently requires that you have an active Internet connection.

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.

AV Foundation Notes

AVCaptureSession now uses your app’s AVAudioSession by default.


Fixed in Seed 4

iCloud calendar events may not sync through fetch, push, or manual
refresh as expected. iCloud calendars or reminders may be duplicated
after adding new events.

Car Display

Known Issues

Support for Car Display will be provided once compatible systems are available.


Fixed in Seed 4

Some high-resolution photos will not sync (via iCloud and other services) when set as a Contact’s Caller ID photo.

Core Animation Notes

When the UIViewGroupOpacity key is not present, the default value is now YES. The default was previously NO.

This means that subviews of a transparent view will first be
composited onto that transparent view, then the precomposited subtree
will be drawn as a whole onto the background. A NO setting results in
less expensive, but also less accurate, compositing: each view in the
transparent subtree is composited onto what’s underneath it, according
to the parent’s opacity, in the normal painter’s algorithm order.



The Exchange DeviceIdentifier has been changed back to the behavior of iOS 6 where it uses the serial number.



Font line heights have changed from previous seeds. If you had
previously manually aligned your font, it may move slightly up
vertically with this seed.

Foundation Notes

An NSMetadataQuery with ubiquitous scope can now use kMDItemContentTypeTree in predicates. For example:

NSPredicate *p = [NSComparisonPredicate





modifier: NSAnyPredicateModifier


When called on results returned by queries with ubiquitous scopes,
-[NSMetadataItem valueForAttribute:NSMetadataItemDisplayNameKey] now
produces the same value as –

[NSURL getResourceValue: forKey: NSURLLocalizedNameKey], matching nonubiquitous queries.

iCloud Notes

If 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
notification. If you see multiple alerts or observe issues with
reenabling recovery, please file a bug report.

iCloud Keychain in iOS 7 Seed 3 or later is not backward compatible with iOS 7 Seed 2 or OS X Mavericks 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

After updating to iOS 7 Seed 3 or later, go to Settings > iCloud > Keychain and reenable iCloud Keychain 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 off 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 off Activation Lock in Settings > iCloud > Find My iPhone.

Fixed in Seed 4

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.

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.

Credit cards deleted in Safari Settings > AutoFill are removed from the device, but not from other devices.
Sometimes when you disable iCloud Keychain you may not be able to reenable it.

Keychains are not synced among devices when they are on a wireless network with WEP security.

When setting up iCloud Keychain in Setup Assistant on iPhone 4 and iPhone 4s, the keyboard covers the iCloud Security Code entry field and the Advanced Options link.

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.
Known Issues
Voice Memos are not restored from iCloud Backups.
Workaround: Make sure to sync Voice Memos off of your device before restoring from iCloud.

Users in Switzerland, France, Spain, Germany, Poland, Finland, and
possibly some other countries, will be unable to restore their keychains
using phone number validation.

Workaround: Use Random Security Code.

MapKit Notes

If the calls to renderInContext on the layer backing an MKMapView are
made off the main thread, they should be eliminated or moved to the
main thread. Failure to do so can cause an app crash. Instead of using
renderInContext, use the new MKMapSnapshotter APIs.



iOS 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 monitor and
handle the media server reset event, since the media app may receive a
remote request to resume playback after a reset.

Notifications to
monitor these media server events are available in AVAudioSession and
proper handling is described in General recommendations for handling

Multipeer Connectivity Notes

Many 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:

This delegate method has been implemented:

The following new method on MCSession has been implemented:

- (NSOutputStream *)startStreamWithName:(NSString *)streamName toPeer:(MCPeerID
*)peerID error:(NSError **)error

- (void)session:(MCSession *)session didReceiveStream:(NSInputStream *)stream
withName:(NSString *)streamName fromPeer:(MCPeerID *)peerID

- (NSProgress *)sendResourceAtURL:(NSURL *)resourceURL withName:(NSString
*)resourceName toPeer:(MCPeerID *)peerID withCompletionHandler:(void(^)(NSError

The delegate method to start receiving a resource from remote peer has been implemented as:
- (void)session:(MCSession *)session didStartReceivingResourceWithName:(NSString

The delegate method to finish receiving a resource from remote peer
and save the content in a temporary location is implemented as:

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, “Nearby Networking with Multipeer Connectivity.”



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.

Networking Fixed in Seed 4

All NSURL session tasks now start suspended rather than running. This
allows you to set up their state before the task is started.


Cellular fallback is a technology that will attempt to connect over
the cellular interface when a connection over the Wi-Fi interface does
not succeed. There are a number of cases where connection failures may
occur over Wi-Fi, such as a cable modem in need of a reboot or a
firewall that blocks access to certain resources.

If your app restricts network operations over the cellular network,
verify that your code is using the proper API to implement that policy.

For example, if your app watches SCNetworkReachability for the
kSCNetworkReachabilityFlagsIsWWAN to monitor when Wi-Fi is available, it
may not behave correctly under cellular fallback.

If an app uses this method and then attempts to connect, thinking it will get a connection over Wi-
- (void)session:(MCSession *)session didFinishReceivingResourceWithName:(NSString
*)resourceName fromPeer:(MCPeerID *)peerID atURL:(NSURL *)localURL withError:
(NSError *)error

Note: The app is responsible for moving the file to a permanent location within its sandbox.
*)resourceName fromPeer:(MCPeerID *)peerID withProgress:(NSProgress *)progress

Fi, the app may inadvertently end up with a connection over the
cellular network. The lack of the kSCNetworkReachabilityFlagsIsWWAN is
not a guarantee that your connection will not go over cellular. If your
code needs to enforce that a connection not go over cellular, it needs
to specify that when making a networking request.

Instead, for CFNetwork code using CFSocketStream, CFHTTPStream, or
similar APIs, set the kCFStreamPropertyNoCellular property to true on
the CF object before connecting.
For NSURLRequests, call [request setAllowsCellularAccess: false].

In addition to making sure that your code will never be connected
over cellular because of cellular fallback, this call ensures that your
code will never be connected over cellular because of the VPN or
convoluted routing problems (connecting to IPv6 over cellular because
only IPv4 is available over Wi-Fi, etc.).

To verify that your app is behaving properly, you should test against
a broken Wi-Fi network. The easiest way to set up a broken Wi-Fi
network is to set up an Apple AirPort Base Station or other Wi- Fi
access point to hand out a DHCP address and leave the access point
disconnected from the Internet. Another simple way of testing is to
unplug the cable or DSL line from your cable or DLS modem.

Two low-level networking APIs that used to return a MAC address now
return the fixed value 02:00:00:00:00:00. The APIs in question are
sysctl (NET_RT_IFLIST) and ioctl (SIOCGIFCONF). Developers using the
value of the MAC address should migrate to identifiers such as
-[UIDevice identifierForVendor]. This change affects all apps running on
iOS 7.

Objective-C Runtime Notes

Due to changes in how the isa field is implemented, *self may change
during enumeration (for example, if the container is retained).

Workaround: When implementing countByEnumeratingWithState, do not set state- >mutationsPtr = self.



As of iOS 7 Seed 4, Passbook has added support for the major and
minor fields to better match the rest of the iBeacon ecosystem. The new
major and minor keys are independently variable optional alongside
proximityUUID (required) in each dictionary in the beacons array.

In previous versions of the iOS SDK, Passbook did not validate the
back fields on passes completely. The validation rules have not changed,
but validation is now including back fields. Please check the console
log for additional logs.

As of iOS 7 Seed 3, PKPassLibraryDidCancelAddPasses is a new status
code in the PKPassLibraryAddPassesStatus enum. It signifies that the
user tapped Cancel in an add-passes alert.

Fixed in Seed 4

Safari website credentials do not always autofill between mobile and
desktop versions. Workaround: Use the desktop version if the site offers

Upgrading to iOS may reset Safari’s settings to their default values.

Security Notes

-[UIDevice uniqueIdentifier] is no longer accepted in submissions to
the App Store. In iOS 7, apps that are already on the store or on users’
devices that call this removed API will no longer be returned the UDID.
Instead, -[UIDevice uniqueIdentifier] will return a 40-character string
starting with FFFFFFFF, followed by the hex value of -[UIDevice
identifierForVendor]. It is important to consider how this will affect
existing apps. Consider submitting updates that no longer access the

iOS now requests user consent for apps to use audio input on all iOS 7
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
AVAudioSession. The AVAudioSession categories that will present the
alert are AVAudioSessionCategoryRecord and

If the user doesn’t allow access, the audio session data will be all
zeros (silence). For devices where camera access is requested and denied
by the user, the video capture session is a black screen.

The API gethostuuid() has been removed and will not be accepted for
submission to the store, regardless of the targeted OS. For existing
apps running on iOS 7, the function will return a uuid_t representation
of the vendor identifier (-[UIDevice identifierForVendor]).


Known Issue

The setup assistant may crash when setting up a new device with an existing email address.
Workaround: Continue through the setup assistant. Then go to Settings > iCloud and manually enable the services that are off.



This seed includes development versions of new male and female Siri
voices for U.S. English and French, and a male voice for German.

Social Notes

Through iOS 6, when using TWTweetComposeViewController and
SLComposeViewController (the latter only for Twitter and Weibo, but not
Facebook), if the caller supplies a completionHandler, the supplied
completionHandler is responsible for dismissing the view controller. As
of iOS 7, if the app links against the iOS 7 SDK, the view controller
will dismiss itself even if the caller supplies a completionHandler. To
avoid this, the caller’s completionHandler should not dismiss the view

Known Issue

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.

Fixed in Seed 4

Springboard crashes when accessing some web clips in the App Switcher.
When restoring from an iCloud backup on a device with hundreds of apps, Springboard may crash repeatedly.

Passwords with diacritical marks are not supported in this seed. If
you have diacritical marks in your password, change it before upgrading
to Seed 3 as you will be unable to unlock your device.
Sprite Kit Known Issue
+[AVPlayer playerWithPlayerItem:] returns an AVPlayer object, but the
current item will return nil if the player was created on another


Known Issue

Some iPhone 4 devices are unable to download content from the App Store and the iTunes Store.


Fixed in Seed 4

The Wi-Fi sync option in iTunes is checked, but Wi-Fi devices do not appear in iTunes.



In previous seeds, the snapshot API (snapshotView and
resizableSnapshotViewFromRect:withCapInsets:) would defer taking the
snapshot if the view had never been committed or had been added to the
view hierarchy in the current transaction. This behavior has changed.

Snapshots now always represent the current, committed state of the
view. Attempting to snapshot a 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 to YES, this instructs the snapshot to wait until
all pending changes to the hierarchy have been committed. To maintain
the pre-Seed 4 behavior, pass NO and the snapshot will capture what is
currently 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 is
too long, the bar will show the back indicator chevron with no title.

+[UIPasteboard pasteboardWithName:create:] and +[UIPasteboard
pasteboardWithUniqueName] now unique the given name to allow only those
apps in the same application group to access the pasteboard. If the
developer attempts to create a pasteboard with a name that already
exists and they are not part of the same app suite, they will get their
own unique and private pasteboard. Note that this does not affect the
system provided pasteboards, general, and find.

Starting with Seed 2, apps default to using the new view
controller-based status bar management system. To opt out of this, add a
value of NO for the UIViewControllerBasedStatusBarAppearance key to
your Info.plist.

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.

UIScreenEdgePanGestureRecognizer allows you to perform actions in
response to swipes over the edge of the screen using the same heuristics
that the system uses for its own gestures. Use this if you have a
navigation semantic of your own that doesn’t use UINavigationController
but should include this gesture (e.g., Safari).

This gesture recognizer has a property that describes the edges on
which it’s active. UIRectEdge is a new enum type that this property and
-[UIViewController edgesForExtendedLayout] can share. UIRectEdge
replaces UIExtendedEdge, which will be removed. The members of both have
the same values. Use Xcode to replace all instances of “UIExtendedEdge”
in your project with “UIRectEdge”.

UIButtonTypeInfoLight, UIButtonTypeInfoDark, and UIButtonTypeDetailDisclosure buttons 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 4

The UIImagePickerController does not show a live preview when using
custom overlays. UIPickerView with custom views doesn’t show the views
in the selection indicator.

UIRefreshControl and the associated table view are hidden under the navigation bar when setTranslucent: is NO.

IB support for -topLayoutGuide and -bottomLayoutGuide is not
functional in this seed. The title of the UIRefreshControl appears below
the navigation bar.

Known Issue

Your app’s UI may move slightly after using a media player in landscape mode.



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
width=device-width, initial-scale=1.0.

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-size property or the -webkit-background-size
property. This issue affects both native apps that display web content
and web pages viewed in Safari for iPhone.

The background CSS shorthand property now resets the value of the
background-size property to auto when background size is not specified.
This new behavior is per the CSS spec, and the old behavior is available
only for apps linked to an SDK prior to iOS 7.0 when running on iOS 7
or later.

Workaround: Specify the background-size property or the
-webkit-background-size property after the background shorthand property
in the CSS stylesheet for the web content being displayed.

Known Issue

Web apps and web clips created in previous seeds 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 content in Safari, tapping the Action button,
and then “Add to Home Screen.”



This seed introduces changes to AWDL so that technologies that use
it—such as AirDrop and the MultiPeerConnectivity APIs—will not work
properly with older seeds.


Add a Comment