anonpenguin23 29064ed0e6 feat(push): collapse identifier (apns-collapse-id / Expo collapseId) from message_id (#833)
Thread an optional MessageID through PushMessage -> the APNs apns-collapse-id
header (capped at 64 bytes) and Expo's collapseId field (which Expo maps to FCM
collapse_key / APNs apns-collapse-id). A superseded or duplicate push now
collapses on-device instead of stacking. Empty MessageID preserves the prior
behavior (each push distinct). No native FCM send provider exists, so the FCM
collapse_key is covered via the Expo path.
2026-06-19 10:45:17 +03:00
..