Release Notes
Contents:
Introduction
watchOS SDK 3.0 provides support for developing watchOS apps. It is packaged with a complete set of Xcode tools, compilers, and frameworks for creating apps for watchOS. These tools include the Xcode IDE and the Instruments analysis tool, among many others.
This version of watchOS is intended for installation only on devices registered with the Apple Developer Program. Attempting to install this version of watchOS in an unauthorized manner could put your device in an unusable state.
For more information and additional support resources, visit http://developer.apple.com/programs/.
Bug Reporting
For issues not mentioned in Notes and Known Issues, please file bugs through the Apple Developer website https://developer.apple.com/bug-reporting/. Additionally, you may discuss these issues and watchOS SDK 3.0 in the Apple Developer Forums at http://devforums.apple.com.
Notes and Known Issues
The following items relate to using watchOS 3.0 SDK to develop code.
Activity
For Activity Sharing to properly function, ensure that every paired Apple Watch is running watchOS 3.
Apple Pay
A payment card may show as unavailable when attempting to use Apple Pay after restarting Apple Watch.
Workaround: Dismiss and double-tap the side button again to make the payment.
Background Refresh
Violations of system resources will result in a crash report for your application. The exception code provides context about the nature of the violation:
- 0xc51bad01
The app used too much CPU time.
- 0xc51bad02
The app took too much wall time.
- 0xc51bad03
The app may not have had sufficient runtime to complete the task.
Watch Connectivity
Apple Watch may get into a state that fails to receive watch connectivity transmission.
Workaround: Reboot Apple Watch.
In some first deploy scenarios,
isComplicationEnabled == NOfor watch connectivity after a complication is configured on the clock face.Workaround: Reboot Apple Watch.
A file received by watch connectivity might have an additional suffix after the filename.
HomeKit
Using enableNotification:completionHandler: on Apple Watch causes homed to hang.
Workaround: Use enableNotification:completionHandler: on the iOS device instead.
Networking
To improve customer privacy, HTTPS URLs, NSURLSession, and NSURLConnection no longer support RC4 cipher suites during the TLS handshake. Affected apps and services should upgrade web servers to use more modern cipher suites.
In Console, your app will show -1200 and -98xx errors that did not appear in the previous release (that is, NSURLError secureConnectionFailed and SecureTransport errors, respectively).
(CFNetwork)
HTTP load failed (error code: –1200 [3:-9824])(CFNetwork)
NSURLConnection finished with error code –1200
To determine if a particular URL is affected by this change, on macOS use nscurl <url>. If the load fails, and nscurl --enable-rc4 <url> succeeds, then the web server supports only RC4 cipher suites and needs to be upgraded.
Note that another reason you may see identical errors is because of a change where App Transport Security NSExceptionMinimumTLSVersion or NSThirdPartyExceptionMinimumTLSVersion is now being respected for NSURLConnection. To learn more about ATS keys, see NSAppTransportSecurity.
NSURLConnection
NSURLConnection disallows connections that use TLS protocol versions lower than the protocol version specified by an ATS policy via the NSExceptionMinimumTLSVersion or NSThirdPartyExceptionMinimumTLSVersion keys. To learn more about ATS keys, see NSAppTransportSecurity.
Workaround: This is now being enforced as of the WWDC 2016 seed. Affected apps and services should upgrade web servers to use more modern TLS protocol versions.
NSURLSession
The NSMutableURLRequest class requires that the HTTPBodyStream property be an unopened stream. The NSURLConnection and NSURLSession classes now strictly enforce this unopened stream requirement. Affected apps should ensure that any NSInputStream that is provided has not yet been opened.
Snapshot
Periodic updates have been disabled for WatchKit apps that have not adopted the new handleBackgroundTasks: API available in watchOS 3. Adopt this new method to ensure that your app is given periodic updates.
WatchKit
Notes
SpriteKit and SceneKit scenes are paused when an app goes to the Dock.
When a WatchKit app is in an active debug session and in the background, you can send background tasks to the app through the Debug menu. “Simulate Background Refresh” sends a
WKApplicationRefreshBackgroundTaskand “Simulate UI Snapshot” sends aWKSnapshotRefreshBackgroundTask. Note that these tasks do not have any user info data that may have been registered from a previous request from the app. Also note that these tasks are not sent if the app is in the foreground.T
WKInterfaceControllermethodshandleActionWithIdentifier:forRemoteNotification:andhandleActionWithIdentifier:forLocalNotification:are unavailable for watchOS 3. This API should only be called via iOS.You need to manually resume your
SCNSceneobjects when the interface controller that holds them is activated after the app comes to the foreground.
Known Issues
The determination of whether a WatchKit app implements
handleBackgroundTasks:in itsWKExtensionDelegateis made at launch time and never updated. If your WatchKit app sets[WKExtension sharedExtension].delegateafter being launched, it will not properly be checked.Workaround: Use the
WKExtensionDelegatethat is designated in yourInfo.plistfile.watchOS Simulator can enter a state in which updating app context and transferring user info and files to iOS Simulator fails. Sending message and message data also takes longer than expected.
SecAccessControlCreateWithFlagsdoes not work in watchOS 3.watchOS apps that link against
AVFoundation.frameworkwill not build for the Simulator.Attempting to reload an interface controller object that contains a SpriteKit or SceneKit control while in the background causes a crash.
Workaround: Mark SpriteKit and SceneKit controls as paused in Interface Builder, and resume them only when the extension is marked as being in the foreground.
At simulator first launch, watch connectivity communication could be clogged or slowed down for several minutes.
Workaround: Wait for all watch-to-phone communications to come through.
NSLog()messages are not printed in Xcode’s debug console when running on watchWorkaround: Install the
sysdiagnoselogging profile on Apple Watch to reinstate logging.
Copyright © 2018 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2016-09-13