feat: ingest iOS push notifications via FCM Kafka topics - #86
Conversation
Add ingestion for the new push-<game>_ios-(single|massive) topics so the GCM pusher can consume iOS messages alongside the existing Android ones. - Extend topic regex in config and common.go to match the ios platform - Add Platform field to KafkaMessage and populate it from the topic - Subscribe pusher gcm to ios single/massive topics for every gcm app - Cover new parsing and consumer behavior with unit tests
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d78859e. Configure here.
| Game: parsed.Game, | ||
| Platform: parsed.Platform, | ||
| Topic: *topicPartition.Topic, | ||
| Value: value, |
There was a problem hiding this comment.
iOS messages misreported as "gcm" in stats and operations
High Severity
The new Platform field on KafkaMessage is correctly populated (e.g., "ios" for iOS topics) but is never read by the firebase messageHandler. That handler hardcodes "gcm" in all ~10 call sites for stats reporting, feedback, dedup, and rate limiting. iOS notifications ingested via the new topics will be mislabeled as "gcm" everywhere — breaking per-platform metrics, sharing dedup keys and rate-limit buckets across platforms.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit d78859e. Configure here.
There was a problem hiding this comment.
It is part of the incremental development of the feature. Carry the platform value end-to-end through the Firebase message handler so that dedup, rate limiting, stats reporters, and feedback reporters use the actual platform (gcm or ios) instead of the hardcoded "gcm" string, is the next task in the development.
92c5687
into
feat/migration-apns-to-fcm


Add ingestion for the new push-_ios-(single|massive) topics so the GCM pusher can consume iOS messages alongside the existing Android ones.
Note
Medium Risk
Adds a new field to the
KafkaMessagestruct and changes topic subscription/parsing, which can break downstream consumers or alter which Kafka topics are consumed if assumptions were implicit.Overview
Enables ingestion of new
push-<game>_ios-(single|massive)Kafka topics alongside existinggcm/apnstopics by expanding the configured topic regexes and theGetGameAndPlatformFromTopicparser to recognizeios.Propagates the parsed platform through the queue pipeline by adding
Platformtointerfaces.KafkaMessage, populating it inKafkaConsumer.receiveMessage, and updatingGCMPusherto subscribe to bothgcmandiostopics per app. Adds unit tests covering topic parsing and the newGame/Platformfields on consumed messages.Reviewed by Cursor Bugbot for commit d78859e. Bugbot is set up for automated code reviews on this repo. Configure here.