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