Add MyDataWatchHandler, handle
This commit is contained in:
parent
4adcb63797
commit
f7e4a9f0a7
58
SecureStorageSample Watch App/README.md
Normal file
58
SecureStorageSample Watch App/README.md
Normal file
@ -0,0 +1,58 @@
|
||||
# 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
|
||||
Loading…
Reference in New Issue
Block a user