// ๐ŸŒ ์›น ์ „์šฉ - ๋ธŒ๋ผ์šฐ์ € ์•Œ๋ฆผ(Notification) API๋กœ "ํƒ€์ด๋จธ ์ผœ๋†“๊ณ  ํƒญ์„ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ" ๊ฐ™์€ // ์ฆ‰๊ฐ์ ์ธ ๋กœ์ปฌ ์•Œ๋ฆผ์„ ๋„์šด๋‹ค. FCM ํ‘ธ์‹œ์™€ ๋‹ฌ๋ฆฌ ์„œ๋ฒ„ ์™•๋ณต ์—†์ด ๋ฐ”๋กœ ๋œฌ๋‹ค. // ์•Œ๋ฆผ API๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์กฐ์šฉํžˆ ๋ฌด์‹œํ•œ๋‹ค. import 'dart:js_interop'; import 'package:web/web.dart' as web; Future requestNotificationPermission() async { try { if (web.Notification.permission == 'granted') return true; final permission = await web.Notification.requestPermission().toDart; return permission.toDart == 'granted'; } catch (_) { return false; } } void showBrowserNotification(String title, String body) { try { if (web.Notification.permission != 'granted') return; web.Notification(title, web.NotificationOptions(body: body)); } catch (_) { // ์กฐ์šฉํžˆ ๋ฌด์‹œ } }