# SecureStorageSample Watch App A watchOS companion app demonstrating data synchronization with the iOS app using WatchConnectivity. ## Overview This watch app receives `UserProfile` data synced from the paired iPhone via `WCSession.updateApplicationContext`. It does **not** use LocalData directly for storage—instead, it displays synced data in memory. ## Architecture ``` SecureStorageSample Watch App/ ├── ContentView.swift # Displays synced profile data ├── SecureStorageSampleApp.swift ├── Protocols/ │ └── WatchDataHandling.swift # Protocol for payload handlers ├── State/ │ └── WatchProfileStore.swift # Holds synced profile in memory └── Services/ ├── WatchConnectivityService.swift └── Handlers/ └── UserProfileWatchHandler.swift ``` ## Data Flow 1. **iOS app** calls `SyncHelper` when storing data with `syncPolicy: .automaticSmall` or `.manual` 2. `SyncHelper` sends data via `WCSession.updateApplicationContext` 3. **Watch app** receives context in `WatchConnectivityService` 4. The service dispatches each payload key to its registered `WatchDataHandling` handler 5. `UserProfileWatchHandler` decodes the profile and updates `WatchProfileStore` ## Adding New Sync Payloads 1. Create a new handler conforming to `WatchDataHandling`: ```swift struct MyDataWatchHandler: WatchDataHandling { let key = "myData" func handle(data: Data) { // Decode and update state } } ``` 2. Register it in `WatchConnectivityService.registerDefaultHandlers()` ## Limitations - **No persistent storage on watch**: Data is held in memory only - **One-way sync**: Watch receives data from iPhone; it does not send data back - **Simulator limitations**: WatchConnectivity may not work reliably in the simulator ## Requirements - watchOS 10.0+ - Paired with iOS app via WatchConnectivity