Skip to content

๐Ÿ”€ :: (#389) - Android FCM ์•Œ๋ฆผ ํ‘œ์‹œ ๋ฌธ์ œ ์ˆ˜์ • - #390

Merged
leesengjun merged 2 commits into
developfrom
fix/#389-android-fcm-notification-display
Oct 12, 2026
Merged

leesengjun merged 2 commits into
developfrom
fix/#389-android-fcm-notification-display

Conversation

@leesengjun

Copy link
Copy Markdown
Contributor

๐Ÿ’ก ๊ฐœ์š”

Android production ํ™˜๊ฒฝ์—์„œ FCM ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์„œ๋ฒ„ ๋“ฑ๋ก์€ ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ณ ,
Firebase Console ํ…Œ์ŠคํŠธ ๋ฉ”์‹œ์ง€๋„ ์•ฑ๊นŒ์ง€ ์ˆ˜์‹ ๋˜์ง€๋งŒ
์‹ค์ œ ์•Œ๋ฆผ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด์—๋Š” AndroidManifest.xml์—
laundry_completion ๊ธฐ๋ณธ ์•Œ๋ฆผ ์ฑ„๋„ ID๋งŒ ์„ ์–ธ๋˜์–ด ์žˆ๊ณ 
์‹ค์ œ NotificationChannel ์ƒ์„ฑ ์ฝ”๋“œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์•ฑ์ด foreground ์ƒํƒœ์ผ ๋•Œ
FCM ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•ด๋„ ์‹œ์Šคํ…œ ์•Œ๋ฆผ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ๋กœ์ง์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ˆ˜์ •์œผ๋กœ Android ์•Œ๋ฆผ ์ฑ„๋„์„ ์‹ค์ œ๋กœ ์ƒ์„ฑํ•˜๊ณ ,
foreground ์ƒํƒœ์—์„œ๋„ ์ˆ˜์‹ ํ•œ notification payload๋ฅผ ์‹œ์Šคํ…œ ์•Œ๋ฆผ์œผ๋กœ ํ‘œ์‹œํ•˜๋„๋ก ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”— ๊ด€๋ จ ์ด์Šˆ

Close #389

๐Ÿ“ƒ ์ž‘์—…๋‚ด์šฉ

  • Android laundry_completion NotificationChannel ์ƒ์„ฑ
  • Manifest์˜ ๊ธฐ๋ณธ notification channel ID์™€ ์‹ค์ œ ์ƒ์„ฑ channel ID ์ •ํ•ฉ์„ฑ ์œ ์ง€
  • Android foreground FCM ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ์ฒ˜๋ฆฌ ์ถ”๊ฐ€
  • foreground ๋ฉ”์‹œ์ง€๋ฅผ NotificationManager๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ์•Œ๋ฆผ์œผ๋กœ ํ‘œ์‹œ
  • Android 13+ POST_NOTIFICATIONS ๊ถŒํ•œ ์ƒํƒœ ํ™•์ธ
  • ์•ฑ ์ „์ฒด ์•Œ๋ฆผ ๋ฐ ๊ฐœ๋ณ„ ์ฑ„๋„ ์ฐจ๋‹จ ์ƒํƒœ ํ™•์ธ
  • ์•Œ๋ฆผ์šฉ small icon ๋ฐ channel name ๋ฆฌ์†Œ์Šค ์ถ”๊ฐ€
  • foreground ์•Œ๋ฆผ ํ‘œ์‹œ์šฉ Android MethodChannel ์ถ”๊ฐ€
  • Android notification ํ‘œ์‹œ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
  • ๊ธฐ์กด iOS APNs / FCM token ๋“ฑ๋ก ๋ฐ foreground presentation ๋™์ž‘ ์œ ์ง€
  • ๊ธฐ์กด FCM token refresh / app start / resume / login ๋™๊ธฐํ™” ํ๋ฆ„ ์œ ์ง€

๐Ÿ” ํ…Œ์ŠคํŠธ

  • POST /api/v2/notifications/fcm-token 200 ์‘๋‹ต ํ™•์ธ
  • Firebase Console ํ…Œ์ŠคํŠธ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ๋กœ๊ทธ ํ™•์ธ
    • D/FLTFireMsgReceiver: broadcast received for message
  • Android Emulator background ์ƒํƒœ์—์„œ ํ…Œ์ŠคํŠธ ์•Œ๋ฆผ ํ‘œ์‹œ ํ™•์ธ
  • Android Emulator foreground ์ƒํƒœ์—์„œ ํ…Œ์ŠคํŠธ ์•Œ๋ฆผ ํ‘œ์‹œ ํ™•์ธ
  • Android notification permission ํ—ˆ์šฉ ์ƒํƒœ ํ™•์ธ
  • laundry_completion ์ฑ„๋„ ์ƒ์„ฑ ๋ฐ HIGH importance ํ™•์ธ
  • fvm flutter analyze --no-pub ํ†ต๊ณผ
  • notification ๊ด€๋ จ ํ…Œ์ŠคํŠธ 38๊ฐœ ํ†ต๊ณผ
  • git diff --check ํ†ต๊ณผ
  • ๊ธฐ์กด iOS FCM/APNs ๋กœ์ง ํšŒ๊ท€ ์—†์Œ ํ™•์ธ

์ „์ฒด ํ…Œ์ŠคํŠธ ์ฐธ๊ณ 

์ „์ฒด ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ธฐ์กด History / Report ๊ด€๋ จ ํ…Œ์ŠคํŠธ 2๊ฐœ๊ฐ€
๋กœ์ปฌ Flutter SDK / shader ํ™˜๊ฒฝ ์ฐจ์ด๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ํ…Œ์ŠคํŠธ ๋ฐ ๊ด€๋ จ ์ฝ”๋“œ๋Š” develop๊ณผ ๋™์ผํ•˜๋ฉฐ
์ด๋ฒˆ #389 ๋ณ€๊ฒฝ์œผ๋กœ ๋ฐœ์ƒํ•œ ์‹คํŒจ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๐Ÿ™‹โ€โ™‚๏ธ ์งˆ๋ฌธ์‚ฌํ•ญ

  • Android foreground ์•Œ๋ฆผ์„ native NotificationManager + MethodChannel ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•œ ๊ตฌ์กฐ๊ฐ€ ์ ์ ˆํ•œ์ง€ ํ™•์ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ์•Œ๋ฆผ ํƒญ ์‹œ ์•ฑ๋งŒ ์—ด๋ฆฌ๋ฉฐ ํŠน์ • ํ™”๋ฉด ์ด๋™์šฉ payload ์ฒ˜๋ฆฌ๋Š” ํ•˜์ง€ ์•Š๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ถ”ํ›„ ์•Œ๋ฆผ๋ณ„ ํ™”๋ฉด ์ด๋™์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ ๋ณ„๋„ ์ด์Šˆ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•œ์ง€ ํ™•์ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

โœ… ์ฒดํฌ๋ฆฌ์ŠคํŠธ

@leesengjun leesengjun self-assigned this Oct 7, 2026

@inryeok-bot inryeok-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ

๋ณ€๊ฒฝ๋œ 9๊ฐœ ํŒŒ์ผ์„ ๊ฒ€ํ† ํ–ˆ๊ณ  ์ธ๋ผ์ธ ๊ด€์ฐฐ 1๊ฐœ๋ฅผ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค.

์‹ฌ๊ฐ๋„ ๊ฐœ์ˆ˜
Critical 0
High 0
Medium 1
Low 0

์œ ํ˜•: ํ•„์ˆ˜ ์ˆ˜์ • 0, ์ˆ˜์ • ๊ถŒ์žฅ 1, ์ œ์•ˆ 0, ํ™•์ธ ์งˆ๋ฌธ 0, ์ข‹์•˜๋˜ ์  0

์ฃผ์š” ๊ด€์ฐฐ

  • ์ˆ˜์ • ๊ถŒ์žฅ ยท MEDIUM ๋ฐฑ๊ทธ๋ผ์šด๋“œ FCM ์•Œ๋ฆผ๋„ ์ƒˆ ์ฑ„๋„์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

๊ฒ€ํ† ํ•œ head: 086327d99e98 ยท ์ตœ์‹  head์—์„œ ๋‹ค์‹œ ๊ฒ€ํ† ํ•˜๋ ค๋ฉด /review๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.

android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="laundry_completion" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐ŸŸ  ์ˆ˜์ • ๊ถŒ์žฅ ยท MEDIUM

๋ฐฑ๊ทธ๋ผ์šด๋“œ FCM ์•Œ๋ฆผ๋„ ์ƒˆ ์ฑ„๋„์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

ํ˜„์žฌ Manifest์—๋Š” ๊ธฐ๋ณธ ์•„์ด์ฝ˜๋งŒ ์ง€์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ android_channel_id๋ฅผ ๋„ฃ์ง€ ์•Š์€ notification payload๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋‚˜ ์ข…๋ฃŒ ์ƒํƒœ์—์„œ Firebase SDK๊ฐ€ ํ‘œ์‹œํ•˜๋ฉด laundry_completion์ด ์•„๋‹ˆ๋ผ FCM fallback ์ฑ„๋„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ foreground์™€ background ์•Œ๋ฆผ์˜ ์„ค์ •ยท์ค‘์š”๋„๊ฐ€ ์„œ๋กœ ๋‹ฌ๋ผ์ง€๊ณ , README์— ๋ช…์‹œํ•œ ๋‹จ์ผ ์ฑ„๋„ ๋™์ž‘๋„ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์œ : ๋™์ผํ•œ ์„ธํƒ ์™„๋ฃŒ ์•Œ๋ฆผ์ด ์•ฑ ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ์ฑ„๋„๊ณผ ์‚ฌ์šฉ์ž ์„ค์ •์„ ๋”ฐ๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ: ๊ธฐ๋ณธ ์•Œ๋ฆผ ์ฑ„๋„ ID ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  foreground/background ์•Œ๋ฆผ์ด ๋ชจ๋‘ laundry_completion์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

Base automatically changed from develop to main October 11, 2026 07:46
@leesengjun
leesengjun changed the base branch from main to develop October 12, 2026 01:50
@leesengjun
leesengjun merged commit 9b66f52 into develop Oct 12, 2026
2 checks passed
@leesengjun
leesengjun deleted the fix/#389-android-fcm-notification-display branch October 12, 2026 01:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants