watchOS SDK Release Notes for watchOS 3.1
Contents:
Introduction
watchOS SDK 3.1 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.1 in the Apple Developer Forums at http://devforums.apple.com.
Notes and Known Issues
The following items relate to using watchOS 3.1 SDK to develop code.
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 == NO
for watch connectivity after a complication is configured on the clock face.Workaround: Reboot iPhone.
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
WKApplicationRefreshBackgroundTask
and “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.The
WKInterfaceController
methodshandleActionWithIdentifier:forRemoteNotification:
andhandleActionWithIdentifier:forLocalNotification:
are unavailable for watchOS 3. This API should only be called via iOS.You need to manually resume your
SCNScene
objects 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 itsWKExtensionDelegate
is made at launch time and never updated. If your WatchKit app sets[WKExtension sharedExtension].delegate
after being launched, it will not properly be checked.Workaround: Use the
WKExtensionDelegate
that is designated in yourInfo.plist
file.If a SceneKit scene is backgrounded for over a minute, the scene is paused instead of automatically resumed when it comes back to the foreground.
Workaround: Resume the
SCNScene
object in your interface controller’swillActivate
call.Some third-party apps that use an iMessage app extension may not launch on Apple Watch.
Workaround: Uninstall and reinstall the app from the Apple Watch app on your iPhone.
Xcode
Known Issues
CloudKit usage is blocked in watchOS Simulator. Running any test will throw a “Not Authenticated” error even though you are signed in via the paired iOS Simulator.
Workaround: Use CloudKit on paired devices with watchOS 3 and iOS 10.
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.
SecAccessControlCreateWithFlags
does not work in watchOS 3.watchOS apps that link against
AVFoundation.framework
will not build for the simulator.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 Apple Watch.Workaround: Install the
sysdiagnose
logging profile on Apple Watch to reinstate logging. To learn more, seesysdiagnose
on the Profiles and Logs webpage.
Copyright © 2018 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2016-10-27