WatchConnectivity user info transfers work unreliably since iOS 9.3 / watchOS 2.2

Originator:Felix.Lisczyk
Number:rdar://25767669 Date Originated:2016-04-17
Status:Duplicate of 25065800 (Open) Resolved:
Product:watchOS SDK Product Version:watchOS 2.2 (13V144)
Classification:Serious bug Reproducible:Always
 
Summary:
User info transfers sent from iPhone to the watch (or vice versa) arrive delayed or don't get delivered at all since the latest iOS and watchOS updates. They seem to get stuck in the outstandingUserInfoTransfers queue. When a new user info transfers is enqueued, the oldest pending transfer arrives on the watch instead. I've observed this issue in two scenarios:

* When the iPhone sends multiple user info transfers in a short timeframe
* When the iPhone sends multiple user info transfers while the watch app is not in the foreground

The outstanding user info transfers arrive as soon as I force kill the watch app or restart the device.

Steps to Reproduce:
1. Download the attached Xcode project. I've created a little demo app, which increments a counter on both iPhone and watch by sending user info transfers to the watch. Each transfer contains a timestamp, which is also shown on the watch.
2. Start the app on both devices (simulator works too) and tap slowly on the +1 button inside the iPhone app. The counter should increment on both devices synchronously and the date label on the watch should show the current time.
3. Tap on the +1 button rapidly multiple times. You should notice that the counter on the watch starts to lag behind.
4. Tap on the +1 button slowly again. The watch counter continues to increment but the date label shows a date from step 3. This means that an old transfer got delivered instead of the new one.
5. Optional: Put the watch app into background and tap slowly on the +1 button multiple times. Open the watch app again and you should notice some missing transfers. This issue does only occur on a real device.
6. Kill the watch app and start it again. The counter will go up without interaction because the stuck transfers now get delivered.

Expected Results:
The counters on iPhone and Apple Watch should always stay in sync.

Actual Results:
The watch counter lags behind based on the issues described above.

Version:
watchOS 2.2 (13V144)

Notes:
If the attachment is missing, you can download the Xcode project from http://snipnotes.de/files/WCDemo.zip

Configuration:
Test environment:
iPhone 6 64GB - iOS 9.3.1 (13E238)
Apple Watch 42mm - watchOS 2.2 (13V144)
Xcode 7.3 (7D175) on OS X 10.11.4 (15E65)

Attachments:
'WCDemo.zip' was successfully uploaded.

Comments

Hi!

Im having the same issue here. I tested on my iOS app and on a new project (very simple one) and problem persists. I noticed also that the iOS thinks the watch is either not paired on doesnt have the watch app installed, which makes the session invalid. Do you have any updates on this? Thanks!

By am.pineda206 at June 30, 2016, 4 p.m. (reply...)

Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!