Context
dmz006/datawatch-app is now building a native SwiftUI iOS client (see docs/plans/2026-05-27-ios-client.md).
The parity standard needs to be extended from PWA == Android to PWA == Android == iOS.
Requested changes in this repo (dmz006/datawatch)
1. Parity tracking docs
Update any docs/parity-status.md or equivalent to add an iOS column alongside Android. Every feature row should have: PWA | Android | iOS.
2. Push notifications — APNs support
iOS uses APNs (Apple Push Notification service), not FCM. The server needs to be able to send push to both FCM (Android) and APNs (iOS) device tokens.
Required server-side work:
- Accept
platform=apns on POST /api/device/register (currently only platform=fcm is handled)
- Send to APNs when
platform=apns token is registered alongside any FCM send
- APNs payload schema (matching existing FCM schema):
{
"aps": {
"alert": { "title": "Session waiting", "body": "<session name>" },
"content-available": 1,
"badge": <unread_alert_count>
},
"sessionId": "...",
"type": "wait"
}
3. No iOS-only API paths
All API endpoints the iOS client calls must already exist (iOS consumes the same REST + WebSocket API as Android and the PWA). Filing this issue as a checkpoint — please flag if any endpoint is Android-specific or needs adjustment.
4. Parity rule update
If there is a documented parity rule or contract between the PWA and mobile clients, please extend it to include: "Native iOS patterns (APNs, Keychain, Face ID, WKWebView, SwiftUI navigation) are the iOS-idiomatic equivalents of their Android counterparts. Capability parity is required; implementation parity is not."
Tracking
- Mobile plan:
dmz006/datawatch-app docs/plans/2026-05-27-ios-client.md
- Story 12 (Push/APNs) in mobile plan is blocked on the server-side APNs work above
- ETA for iOS client needing APNs: ~10 weeks from 2026-05-27
Context
dmz006/datawatch-appis now building a native SwiftUI iOS client (see docs/plans/2026-05-27-ios-client.md).The parity standard needs to be extended from PWA == Android to PWA == Android == iOS.
Requested changes in this repo (dmz006/datawatch)
1. Parity tracking docs
Update any
docs/parity-status.mdor equivalent to add an iOS column alongside Android. Every feature row should have: PWA | Android | iOS.2. Push notifications — APNs support
iOS uses APNs (Apple Push Notification service), not FCM. The server needs to be able to send push to both FCM (Android) and APNs (iOS) device tokens.
Required server-side work:
platform=apnsonPOST /api/device/register(currently onlyplatform=fcmis handled)platform=apnstoken is registered alongside any FCM send{ "aps": { "alert": { "title": "Session waiting", "body": "<session name>" }, "content-available": 1, "badge": <unread_alert_count> }, "sessionId": "...", "type": "wait" }3. No iOS-only API paths
All API endpoints the iOS client calls must already exist (iOS consumes the same REST + WebSocket API as Android and the PWA). Filing this issue as a checkpoint — please flag if any endpoint is Android-specific or needs adjustment.
4. Parity rule update
If there is a documented parity rule or contract between the PWA and mobile clients, please extend it to include: "Native iOS patterns (APNs, Keychain, Face ID, WKWebView, SwiftUI navigation) are the iOS-idiomatic equivalents of their Android counterparts. Capability parity is required; implementation parity is not."
Tracking
dmz006/datawatch-appdocs/plans/2026-05-27-ios-client.md