Repository navigation
fix(mobile): send Android app-drawn pushes with no notification block - #2485
Conversation
The Host still sent sound, badge, channelId, categoryId and mutableContent with render=app pushes, so Expo kept an FCM notification block and the Firebase SDK drew an empty notification in the background. Those pushes now carry only to, priority and data (badge moves into data), and the app pins them to the requests channel. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrtPca5pD72Gdx4CFkQdNi
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrtPca5pD72Gdx4CFkQdNi
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
…ground, avatars) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Android phone result on main 2d0bf6e (#2465 + #2483 + #2485): PASS, with one new issue (Xiaomi, Android 16 / HyperOS 3, fresh isolated QA Host and store build, device registered with Evidence: 2465-android-push/phone-main (commit 5784528): Background and foreground were each tested with a Mira DM reply, an approval (Nova in the background, Echo in the foreground), a secret-input request and a group channel reply:
New issue: an unread DM notification is removed by the badge push. In the background run, the Mira DM reply (posted 19:26:58) and the secret-input request were both removed in the same second, 19:27:46, the moment the Host sent a Separately, on b485d61 one Mira DM reply was accepted by Expo (ticket ok) but never appeared. A resend worked, and the cause is unknown; it may be the same removal. Generated by Claude Code |
Requested by Vain · project thread
Why
#2465 was tested on a phone (result and logcat). The foreground works, but in the background the phone still showed empty notifications posted by the FCM SDK (title/text are null, no actions). The cause: with
render=app, the Host only droppedtitle/bodybut still sentsound,badge,channelId,categoryIdandmutableContent. Expo therefore still built an FCMnotificationblock, soonMessageReceivednever ran in the background.As a control, the test thread sent a truly data-only message (just
to,priorityanddata). In the background the app drew it with the full conversation style, avatar and approval buttons, but the notification landed inexpo_notifications_fallback_notification_channel.Change outline
delivery.ts: for an Android device withrender=app, the Expo message now has onlyto,priority: 'high'anddata.title,message,categoryIdandbadgeall go insidedata. iOS and older Android builds are unchanged.ConversationHandlingDelegate: wraps the trigger inRequestsTrigger(a Parcelable that delegatestoBundle), pinning the notification to therequestschannel. The badge falls back todata.badge.Verification
data,priorityandtokeys, and that the data carries thebadge.pnpm typecheckandoxfmtpass. CI compiles the Kotlin module.Generated by Claude Code
Summary by CodeRabbit
Bug Fixes
Documentation