When the watch app calls AWWCSessionManager.shared.applyiPhoneSettings, the phone answers with the dictionary below. Every value comes from the AppleWatchDevice in the deployed study protocol, produced by AppleWatchDevice.toWatchSettings(). You need this page if you are writing your own watch app, extending the one in this documentation, or debugging why a setting did not take effect.

The settings dictionary

Applied automatically by AWARE means the framework applies the value to every registered sensor on its own. Everything else has to be read and applied by the watch app, because only the watch app knows which sensors exist — that is what apply(settings:) does in the example controller.
The last two keys — watch_transfer_mode and watch_delete_after_transfer — are added by carp_aware_package. The plain AWARE framework does not know about them, so they are forwarded to the watch verbatim.

Phone-side only

One setting never reaches the watch:

Adding a setting of your own

Two small changes, one on each side:
1

Send it from Dart

Add the key to AppleWatchDevice.toWatchSettings(). Keys the native AppleWatchSensor.Config does not recognise are forwarded to the watch unchanged, so no native change is needed on the phone.
2

Read it on the watch

Pick it up in apply(settings:) in your watch controller and apply it to the sensor configuration it belongs to.

When settings take effect

Settings are pulled by the watch, not pushed to it. The watch app requests them:
  • on startup, and
  • whenever it calls applyiPhoneSettings() — the Reload settings button in the example app.
After applying them the controller restarts the sensors, so a changed configuration takes effect immediately once it has been fetched. A protocol update therefore reaches the watch within one watch-app launch, not instantly.