Με λιγότερο από ένα μήνα να έχει μείνει για την
Apple ώστε να αποκαλύψει το
iPhone 5S και πιθανόν το
iPhone 5C -όχι ότι έμεινε κάτι που δεν ξέρουμε- η εταιρία έδωσε το
iOS 7 beta 6 που πιθανόν θα είναι η τελευταία beta έκδοση πριν τη χρυσή έκδοση. Η 6η έκδοση κυκλοφόρησε σήμερα για τα
iPhone,
iPad,
iPad mini και
iPod touch φέρνοντας τις αλλαγές παρακάτω.
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.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 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.ExchangeNotesIn
Seed 4 and later, the
Exchange DeviceIdentifier 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 = [NSComparisonPredicate predicateWithLeftExpression:[NSExpression expressionForKeyPath:@"kMDItemContentTypeTree"] rightExpression:[NSExpression expressionForConstantValue:@"public.rtf"] modifier: NSAnyPredicateModifier type:NSLikePredicateOperatorType options:0];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.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 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 later.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.Known IssuesPassword fields 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 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 usingrenderInContext, 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 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 kAudioSessionProperty_ServerDied.Multipeer ConnectivityNotesThe MCSession APIs 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 *)stream withName:(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 finish receiving a resource from remote
peer and save the content in a temporary 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 file 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, “Nearby Networking with Multipeer Connectivity.”MultitaskingNotesAVAudioSession can no longer become active by apps in the
background that wake
due to Background Fetch,
Background Transfers, and Remote Notification 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 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 RuntimeNotesDue 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.PassbookNotesAs 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 alongsideproximityUUID (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.PhotosNotesUpon upgrading from an earlier
seed,
photo thumbnails in the
Photos app will not appear for a short while.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 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 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 andAVAudioSessionCategoryPlayAndRecord.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]).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 a completionHandler, the suppliedcompletionHandler 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.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 return nil if the
player was created on another thread.StoresKnown IssuesApp
downloads can get stuck in the “Waiting” state.Workaround:
Reboot your device once or twice to resolve the
issue and allow subsequent
downloads to continue.UIKitNotesBefore
Seed 4, 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.Known IssuesPassword fields 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.WeatherNotesWeather conditions are not animated on
iPhone 4.WebKitNotesPreviously, 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 , 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.
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 content in
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 the MultiPeerConnectivity APIs—will not work properly with older seeds.