Programming/React

[ React, TypeScript ] Notification ํŒ์—… ์•Œ๋ฆผ ๋„์šฐ๊ธฐ (์ฐฝ์ด ์ตœ์†Œํ™” ๋˜์–ด๋„ ๋œจ๋Š” ์•Œ๋ฆผ)

seulye 2024. 6. 13. 12:51

 

- ์š”๊ตฌ์‚ฌํ•ญ

์ฐฝ์ด ์ตœ์†Œํ™”๋˜์–ด๋„ ๋œจ๋Š” ์•Œ๋ฆผ์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. 

 

-> ๊ธฐ์กด์— snackbar๋‚˜ useDialog๋กœ ๋„์› ๋˜ ํŒ์—… ์•Œ๋ฆผ์€ ์ฐฝ์ด ์ตœ์†Œํ™”๊ฐ€ ๋˜๋ฉด ๋‹น์—ฐํžˆ ๋ณด์ด์ง€ ์•Š์Œ. 

-> ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•„์š”

 

๊ทธ๋ž˜์„œ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ Notification API๋ฅผ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. 

 

https://mingule.tistory.com/68

 

React์—์„œ Browser Notification (ํ‘ธ์‹œ ์•Œ๋ฆผ) ๊ตฌํ˜„ํ•˜๊ธฐ

๋“ค์–ด๊ฐ€๊ธฐ Babble ํ”„๋กœ์ ํŠธ์—์„œ WebSocket์„ ํ™œ์šฉํ•ด ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๋ฐ” ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์œ ์ € ์ž…์žฅ์—์„œ๋Š” ๋‚ด๊ฐ€ ๋“ค์–ด๊ฐ„ ๋ฐฉ์— ์ฑ„ํŒ…์ด ์ƒˆ๋กœ ์˜ฌ๋ผ์˜จ์ง€, ์˜ฌ๋ผ์˜ค์ง€ ์•Š์€์ง€ ํ™•์ธํ•  ๊ธธ์ด ์—†์—ˆ๋‹ค. ๋ฌด์กฐ๊ฑด ๋‹ค

mingule.tistory.com

 

 

https://developer.mozilla.org/ko/docs/Web/API/Notifications_API/Using_the_Notifications_API

 

์•Œ๋ฆผ API ์‚ฌ์šฉํ•˜๊ธฐ - Web API | MDN

์›น ํŽ˜์ด์ง€๋‚˜ ์•ฑ์—์„œ ์•Œ๋ฆผ(Notifications) API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŽ˜์ด์ง€ ์™ธ๋ถ€์— ํ‘œ์‹œ๋˜๋Š” ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์œ ํœด ์ƒํƒœ๊ฑฐ๋‚˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—

developer.mozilla.org

 

์ด๊ฒƒ๋„ ํ•จ๊ป˜ ์ฐธ๊ณ ํ•˜์˜€๋‹ค. 

 

 

๊ถŒํ•œ ์š”์ฒญํ•˜๊ธฐ

์•”ํŠผ ์–˜๋ฅผ ๋„์šฐ๋ ค๋ฉด ์šฐ์„  Notification ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. mdn ๋ฌธ์„œ๋ฅผ ๋ด๋ณด๋ฉด ๊ถŒํ•œ ํš๋“ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์™€์žˆ๋‹ค. 

Notification.requestPermission().then(function (result) {
  console.log(result);
});

 

 

์ด๊ฑธ ํ˜ธ์ถœํ•˜๋ฉด ์œ„ URL ์ฐฝ์ชฝ์— 

 

์ด๋Ÿฐ์‹์œผ๋กœ ๋ณด์ธ๋‹ค. ์ €๊ฑธ ๋ˆŒ๋Ÿฌ์„œ ํ—ˆ์šฉ์„ ํ•ด์ฃผ๋ฉด, ์ฝ˜์†”๋กœ๊ทธ์— granted๋ผ๊ณ  ๋œฌ๋‹ค.

 

 

 

 

์•Œ๋ฆผ ๋„์šฐ๊ธฐ

    interface NotificationOptions {
        badge?: string;
        icon?: string;
    }
    const notificationRef = useRef<NotificationOptions | null>(null);
    
    
    const onClickSearch = async () => {
        Notification.requestPermission().then(function (result) {
            console.log(result);
        });
        notificationRef.current = new Notification('ใ…‹ใ…‹ใ…‹ใ…‹', { badge: '', icon: '' });
        
        ...์ƒ๋žต
        }