Added
PushX.push_data/3,4— Send data-only (silent) push notifications via both:fcmand named instances. Returns a clear error for:apnswith guidance to usepush/4withpush_type: "background".PushX.Response.extract_fcm_error_code/1— Public function to extract FCM-specific error codes from thedetailsarray in FCM v1 API responses.- 16 new tests (302 total, 25 doctests)
Fixed
- FCM UNREGISTERED errors parsed as unknown_error — FCM v1 API wraps the real error code (e.g.,
UNREGISTERED) in adetailsarray withNOT_FOUNDas the top-level gRPC status. The parser only read the top-level status, soon_invalid_tokencallbacks never fired for unregistered tokens. (#3) - FCM
build_messagealways added notification key — Made data-only messages impossible and sent"notification": nullfor empty Message structs. Now only includes notification when content exists. (#2) - FCM structured payloads treated as notifications — Raw maps with
"notification"and/or"data"keys were wrapped in another"notification"key instead of being passed through.
Full Changelog: https://github.com/cignosystems/pushx/blob/main/CHANGELOG.md#0100---2026-02-19