You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 웹 푸시 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Toplist.maxfit.vn team, along with other related topics such as: 웹 푸시 웹푸시란, 웹 푸시 API, 크롬 웹 푸시, FCM 웹 푸시, 서비스 워커 웹 푸시, 웹에서 푸시 보내기, FCM 웹 푸시 Java, FCM 웹 푸시 예제
web push 사용해보기
- Article author: godsenal.com
- Reviews from users: 39370 Ratings
- Top rated: 3.4
- Lowest rated: 1
- Summary of article content: Articles about web push 사용해보기 Notification API: 웹 페이지에서 시스템 레벨의 알림을 띄울 수 있는 API. … 이 Push API가 생기기 이전의 푸시 알림은 앱에서만 존재했지만 웹 … …
- Most searched keywords: Whether you are looking for web push 사용해보기 Notification API: 웹 페이지에서 시스템 레벨의 알림을 띄울 수 있는 API. … 이 Push API가 생기기 이전의 푸시 알림은 앱에서만 존재했지만 웹 … javascript,web일하다가 web push 사용을 검토해보는 작업을 하게 되었다.
이것저것 찾아보다보니 꽤 재미있기도 하고, 생각보다 그렇게 간단하지는 않다. 이전에 Notification API를 써본적이 있는데 요녀석과는 완전히 다른 것이다.
요것부터 먼저 비교를… - Table of Contents:
웹 푸시 알림(Web Push Notification) — 근둥이의 블로그
- Article author: geundung.dev
- Reviews from users: 537 Ratings
- Top rated: 3.9
- Lowest rated: 1
- Summary of article content: Articles about 웹 푸시 알림(Web Push Notification) — 근둥이의 블로그 웹 푸시 알림(Web Push Notification)이란, 말 그대로 브라우저 환경에서 푸시 알림을 받을 수 있는 기술을 의미한다. 푸시 알림이라고 하면 네이티브 앱 … …
- Most searched keywords: Whether you are looking for 웹 푸시 알림(Web Push Notification) — 근둥이의 블로그 웹 푸시 알림(Web Push Notification)이란, 말 그대로 브라우저 환경에서 푸시 알림을 받을 수 있는 기술을 의미한다. 푸시 알림이라고 하면 네이티브 앱 … 👉 시작하면서 웹 푸시 알림(Web Push Notification)이란, 말 그대로 브라우저 환경에서 푸시 알림을 받을 수 있는 기술을 의미한다. 푸시 알림이라고 하면 네이티브 앱의 전유물이라고 느낄 수 있지만, 웹 푸시..
- Table of Contents:
공지사항
인기 글
태그
최근 댓글
최근 글
블로그 메뉴
👉 시작하면서
👀 웹 푸시 동작 살펴보기
🔥 웹 푸시 구현하기
⭐️ 푸시 알림 동작 확인해보기
티스토리툴바
OKKY – 웹 푸시 SaaS 서비스 만들고 접은 후기
- Article author: okky.kr
- Reviews from users: 32551 Ratings
- Top rated: 3.5
- Lowest rated: 1
- Summary of article content: Articles about OKKY – 웹 푸시 SaaS 서비스 만들고 접은 후기 웹 푸시 SaaS를 처음 생각한 것은 2년 반 전입니다. 한창 PWA(Progressive Web App) 개념이 시작되고 있었을 때입니다. PWA는 웹을 앱처럼 작동시키는 … …
- Most searched keywords: Whether you are looking for OKKY – 웹 푸시 SaaS 서비스 만들고 접은 후기 웹 푸시 SaaS를 처음 생각한 것은 2년 반 전입니다. 한창 PWA(Progressive Web App) 개념이 시작되고 있었을 때입니다. PWA는 웹을 앱처럼 작동시키는 …
- Table of Contents:
웹 푸시 SaaS 서비스 만들고 접은 후기
모든 것이 무너진 순간
시작 직전
시작
완성
더 많은 기능 더 좋은 버전
푸시웹-홈페이지제작 | 쇼핑몰제작
- Article author: pushweb.co.kr
- Reviews from users: 47456 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about 푸시웹-홈페이지제작 | 쇼핑몰제작 쇼핑몰제작,홈페이지제작,반응형홈페이지제작,웹사이트제작,펜션홈페이지제작,기업홈페이지제작,업체,비용. …
- Most searched keywords: Whether you are looking for 푸시웹-홈페이지제작 | 쇼핑몰제작 쇼핑몰제작,홈페이지제작,반응형홈페이지제작,웹사이트제작,펜션홈페이지제작,기업홈페이지제작,업체,비용. 쇼핑몰제작,홈페이지제작,반응형홈페이지제작,웹사이트제작,펜션홈페이지제작,기업홈페이지제작,업체,비용쇼핑몰제작,홈페이지제작,반응형홈페이지제작,웹사이트제작,펜션홈페이지제작,기업홈페이지제작,업체,비용
- Table of Contents:
알림 API 사용하기 – Web API | MDN
- Article author: developer.mozilla.org
- Reviews from users: 33573 Ratings
- Top rated: 4.8
- Lowest rated: 1
- Summary of article content: Articles about 알림 API 사용하기 – Web API | MDN 과거에 푸시 알림에 대한 악용 때문에 웹 브라우저와 개발자는 그런 문제를 완화할 수 있는 전략을 구현하게 되었습니다. 알림을 발생시키려면 사용자 … …
- Most searched keywords: Whether you are looking for 알림 API 사용하기 – Web API | MDN 과거에 푸시 알림에 대한 악용 때문에 웹 브라우저와 개발자는 그런 문제를 완화할 수 있는 전략을 구현하게 되었습니다. 알림을 발생시키려면 사용자 … 웹 페이지나 앱에서 알림(Notifications) API를 사용하면 페이지 외부에 표시되는 알림을 보낼 수 있습니다. 이것은 시스템 레벨에서 처리되는 것으로 애플리케이션이 유휴 상태거나 백그라운드에 있더라도 웹 앱이 사용자에게 정보를 보낼 수 있습니다. 이 글에서는 여러분의 앱에서 이 API를 사용하기 위한 기초를 알아봅니다.
- Table of Contents:
In this article
In this article
예시
권한 요청하기
알림 만들기
알림 닫기
알림 이벤트
기존 알림 대체하기
규격
브라우저 호환성
참고
MDN
Support
Our communities
Developers
kr Web Push – Insider
- Article author: useinsider.com
- Reviews from users: 10832 Ratings
- Top rated: 4.9
- Lowest rated: 1
- Summary of article content: Articles about kr Web Push – Insider 웹 푸시 그 이상의 여정. 인사이더의 AI 기반 메시징 자동화 툴인 아키텍트를 통해 마케터는 어떤 채널에서도 고객 여정에 맞춰 메시지 전달이 가능합니다. 아키텍트를 … …
- Most searched keywords: Whether you are looking for kr Web Push – Insider 웹 푸시 그 이상의 여정. 인사이더의 AI 기반 메시징 자동화 툴인 아키텍트를 통해 마케터는 어떤 채널에서도 고객 여정에 맞춰 메시지 전달이 가능합니다. 아키텍트를 …
- Table of Contents:
오프사이트 고객과의 연결
솔루션 데모 신청하기
Do it! 프로그레시브 웹앱 만들기: 반응형 웹 개발부터 하이브리드 앱 배포까지 … – 김응석 – Google Sách
- Article author: books.google.com.vn
- Reviews from users: 38851 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about Do it! 프로그레시브 웹앱 만들기: 반응형 웹 개발부터 하이브리드 앱 배포까지 … – 김응석 – Google Sách Updating …
- Most searched keywords: Whether you are looking for Do it! 프로그레시브 웹앱 만들기: 반응형 웹 개발부터 하이브리드 앱 배포까지 … – 김응석 – Google Sách Updating ※ 이 책은 PDF 형태로 제공하므로 화면이 작은 단말기(스마트폰)에서는 보기 불편할 수 있습니다. ※구글이 주도하고 MS와 삼성이 주목했다!웹과 앱을 한방에 만드는 프로그레시브 웹앱, 한 권으로 끝내기!이 책은 글로벌 IT 기업들이 주목하는 차세대 웹 기술인 프로그레시브 웹앱(PWA)을 다룹니다. 뷰와 뷰티파이, ES6 버전 이상의 모던 자바스크립트를 활용해 기본적인 반응형 웹을 개발하고, 여기에 PWA(progressive web apps)의 핵심 요소를 추가함으로써 데스크톱이나 모바일 등 어디서나 실행되는 웹앱을 만듭니다. 또한 파이어베이스를 활용해 실시간 데이터베이스 연동과 푸시 알림, 구글 인증 등의 기능을 구현하면서 서버리스 웹 애플리케이션 개발을 경험할 수 있으며, PWA를 하이브리드 앱으로 만들어 구글 플레이에 직접 배포하는 방법까지 안내합니다. 독자는 스위프트나 코틀린, 자바와 같은 언어를 새로 배우지 않고도 모던 웹 기술로 네이티브 앱 수준의 성능과 사용자 경험을 제공하는 모바일 앱을 개발하고 배포하는 방법을 배웁니다.
- Table of Contents:
See more articles in the same category here: toplist.maxfit.vn/blog.
web push 사용해보기
web push 사용해보기
일하다가 web push 사용을 검토해보는 작업을 하게 되었다. 이것저것 찾아보다보니 꽤 재미있기도 하고, 생각보다 그렇게 간단하지는 않다.
이전에 Notification API를 써본적이 있는데 요녀석과는 완전히 다른 것이다. 요것부터 먼저 비교를 하면,
Notification API: 웹 페이지에서 시스템 레벨의 알림을 띄울 수 있는 API. 웹 페이지에서 동작하기 때문에 해당 페이지가 닫혔을 경우 동작하지 않음.
Push API: server → service worker로 push를 통해 알림을 보내는 방식. push 서버에서 요청을 받아 알림을 띄울 때 위 Notification API와 비슷한 개념이 들어있지만, 이 때 사용하는 API는 service worker 의 API.
이제 Push API를 한번 알아보자!
Push API
web push는 이 Push API를 사용하게된다.
Push API는 웹 애플리케이션이 현재 로딩이 되어 있지 않더라도 서버로부터 메시지를 받을 수 있도록 하는 기능이다.
이 Push API가 생기기 이전의 푸시 알림은 앱에서만 존재했지만 웹에서도 어느정도 사용이 가능하다. 사용하는 사람이 많은지는 모르겠지만, 유튜브같은 경우도 요 web push를 지원하고 있어서 알림 설정을 켜두면 유튜브가 켜져 있지 않아도 알림을 받게 된다. 즉, 앱에서의 푸시 알림처럼 백그라운드에서도 알림을 띄울 수 있다.
일단 전제조건이, 웹앱이 현재 로딩되어 있지 않더라도 이기 때문에 서비스 워커를 필요로 하게된다.
Service Worker
서비스 워커는 브라우저가 백그라운드에서 실행하는 스크립트로, 웹페이지와는 별개로 작동해서 요런 백그라운드 푸시 알림이 가능하게 해준다.
한가지 염두해둬야 될 점은 https 에서만 사용 가능하다. (개발용으로 localhost는 사용 가능하다) 즉, web push도 마찬가지로 https 에서만 가능하다.
동작 방식
요게 어떻게 동작하지? 가 조금 이해가 안갔었는데, 리서치하다보니 요런식으로 정리가 된다.
push API 를 이용해 브라우저별로 push subscription 및 subscription 객체(push 서버 endpoint 등이 포함)를 발급 해당 subscription 을 원하는 저장소에 저장 subscription 정보를 이용하여 notification 에 필요한 데이터를 브라우저별 push server 에 push 브라우저에서 해당 정보를 이용해 subscription 하는 서비스워커에 notify -> service worker에서 notification 처리
여기서 push 서버라는게 조금 생소한데, 요건 우리가 만드는건 아니고 브라우저 제조사(구글, 모질라 등)가 제공하는 것이다. Push API를 통해서 subscription 정보를 발급하면 해당 서버의 엔드포인트가 들어있고, 이 엔드포인트에 데이터를 푸싱하면 푸시서버에서 등록된 service worker에 알리고, 우리는 service worker에 이벤트핸들러를 등록해 알림이 왔을때 어떻게할지 처리하면 된다.
또한, 여기서 암호화 부분이 있는데 VAPID를 사용하여 메시지를 암호화한다.
이 암호화의 목적은 본인의 서버에서만 Push가 가능하도록 하는 것이다. Public Key, Private Key를 이용하여 인증 헤더 구성 및 정보 암호화처리를 하고 Push 서버는 이 정보를 이용해 암호화 해독 후 보내준다.
관련 라이브러리
요걸 처음부터 개발하게 되면 위에서 말한 VAPID 발급, 암호화 과정이 굉장히 복잡하다. 요걸 간단하게 해줄 수 있는 라이브러리를 사용하는게 여러모로 편하다.
web-push
https://www.npmjs.com/package/web-push
복잡한 암호화 과정, VAPID 발급 Push 서버로의 POST 과정을 간편하게 처리할 수 있도록 도와준다.
Firebase Cloud Messaging
https://firebase.google.com/docs/cloud-messaging
구글이 제공하는 message 관련 툴
위 web-push가 제공해주는 역할 + subscription 까지 처리해주는 인터페이스를 제공해주고 앱과 같이 크로스 플랫폼으로 메시지를 제공해줄때 관리할 수 있는 역할도 포함되어있다.
웹 용으로만 쓸거라면 별 차이는 web-push랑 크게 차이없다.
예제
위에서 말한 web-push를 이용해서 간단하게 코드 구현을 해보게되면 세 파트 정도로 나누어서 볼 수 있다.
그전에 일단 web-push 라이브러리를 받은 후 VAPID를 발급받도록 하자.
npx web-push generate-vapid-keys
요렇게 하면 Public/Private 키 쌍이 나온다. 요걸 들고 있으면 준비 끝이다.
subscription
일단, 푸시 알림은 사용자 권한이 필요하다. Notification 알림 권한 설정부터 처리한다.
Notification . requestPermission ( ) . then ( ( status ) => { console . log ( ‘Notification 상태’ , status ) ; if ( status === ‘denied’ ) { alert ( ‘Notification 거부됨’ ) ; } } ) ;
권한이 승인되면 서비스워커를 등록하고 subscription 정보를 발급받는다.
Notification . requestPermission ( ) . then ( ( status ) => { console . log ( ‘Notification 상태’ , status ) ; if ( status === ‘denied’ ) { alert ( ‘Notification 거부됨’ ) ; } else if ( navigator . serviceWorker ) { navigator . serviceWorker . register ( ‘/serviceworker.js’ ) . then ( function ( registration ) { const subscribeOptions = { userVisibleOnly : true , applicationServerKey : VAPID_PUBLIC_KEY , } ; return registration . pushManager . subscribe ( subscribeOptions ) ; } ) . then ( function ( pushSubscription ) { postSubscription ( pushSubscription ) ; } ) ; } } ) ;
server
서버에서는 두가지 처리가 필요하다.
Subscription 정보를 받아서 저장하여야 하고, 원할 때 해당 Subscription 정보를 이용해 Push 서버로 알림을 보내는 처리를 해야한다.
먼저 Subscription 정보를 저장하는 처리를 해보면 (간단하게 그냥 배열에다 저장해두었다)
import { PushSubscription } from ‘web-push’ ; const tokenList : PushSubscription [ ] = [ ] ; app . post ( ‘/register’ , function ( req , res ) { tokenList . push ( req . body . subscription ) ; res . send ( ‘success’ ) ; } ) ;
그리고, 원할 때 알림을 보낼 수 있도록 했다. (예시는 /notify 로 원하는 메시지를 쿼리로 포함해 get 요청을 보내면 알림을 보내도록 했다)
import { sendNotification , setVapidDetails } from ‘web-push’ ; app . get ( ‘/notify’ , async ( req , res ) => { const options = { TTL : 24 * 60 * 60 , vapidDetails : { subject : ‘http://localhost:3000’ , publicKey : VAPID_PUBLIC_KEY , privateKey : VAPID_PRIVATE_KEY , } , } ; const payload = JSON . stringify ( { title : ‘Web Notification’ , body : ‘웹 알림입니다.’ , icon : ‘http://localhost:3000/icon.png’ , tag : ‘default tag’ , … req . query , } ) ; try { await Promise . all ( tokenList . map ( ( t ) => sendNotification ( t , payload , options ) ) ) ; } catch ( e ) { console . error ( e ) ; } res . status ( ‘success’ ) ; } ) ;
요렇게하면 이제 서비스워커에서 받아서 알림 처리만 하면 된다.
serviceworker
서비스워커에서는 먼저 push 이벤트를 받아서 알림을 띄워주어야 하고, 알림이 클릭되었을 때 처리를 하면된다.
먼저 push 이벤트 처리이다. 여기서는 간단하게 메시지, icon 처리정도만 해주었다.
self . addEventListener ( ‘push’ , ( event ) => { let { title , body , icon , tag } = JSON . parse ( event . data && event . data . text ( ) ) ; event . waitUntil ( self . registration . showNotification ( title || ” , { body , tag , icon } ) ) ; } ) ;
다음은 알림 클릭시 작업이다.
self . addEventListener ( ‘notificationclick’ , function ( event ) { event . notification . close ( ) ; const urlToOpen = ‘http://localhost:1234’ ; event . waitUntil ( self . clients . matchAll ( { type : ‘window’ , includeUncontrolled : true , } ) . then ( function ( clientList ) { if ( clientList . length > 0 ) { return clientList [ 0 ] . focus ( ) . then ( ( client ) => client . navigate ( urlToOpen ) ) ; } return self . clients . openWindow ( urlToOpen ) ; } ) , ) ; } ) ;
요렇게되면 끝! 예제코드는 요기서 확인할 수 있다.
간단 예제라 재발급처리 등은 빠져있다. 실제 사용케이스에서는 들어가야할 것이다.
지원 여부
지원여부
보면 주요 브라우저에서는 지원하지만 MacOS Safari에서는 지원하지 않고 독자적인 알림 시스템 (APNS) 사용한다고 한다. (요건 적용해본적은 없다) IOS도 찾아보았는데.. Push API 지원을 안해서 사용불가다.
참고
웹 푸시 알림(Web Push Notification)
반응형
👉 시작하면서
웹 푸시 알림(Web Push Notification)이란, 말 그대로 브라우저 환경에서 푸시 알림을 받을 수 있는 기술을 의미한다.
푸시 알림이라고 하면 네이티브 앱의 전유물이라고 느낄 수 있지만, 웹 푸시 기술을 통해 웹에서도 푸시 알림 기능을 구현하고 사용할 수 있다.
브라우저에 구현되어있는 Push API와 자세한 스펙은 아래 문서에서 확인해볼 수 있다.
본 포스팅에서는 웹 푸시가 동작하는 메커니즘에 대해 조금 세부적으로 살펴보고, 직접 데모 코드를 살펴보며 웹 푸시에 대한 전반적인 이해를 할 수 있도록 진행할 예정이다.
분량을 조절하기 위해 모든 API 기능에 대해 설명하진 않으니 자세한 내용은 글 중간중간에 추가해둔 참조 링크(문서)를 참고하길 바란다.
본 포스팅에서 다루는 대부분의 내용은 과거에 출간했던 저서의 내용과 동일하며, PWA에 관심이 있다면 한 번 살펴보면 좋을 것 같다.
🍎 애플과 웹 푸시
안드로이드 및 Chromium 기반 브라우저 등에서는 꽤 오래전부터 웹 푸시를 지원해왔기 때문에 웹에서 푸시 알림을 제공할 수 있었으나, 애플의 Safari 브라우저는 이를 지원하지 않았다.
사실 본인은 애플이 PWA를 내다 버린 줄 알았다.
애플은 항상 폐쇄적인 모습을 보이는데, 웹에게 너무 많은 기능을 제공하여 네이티브 앱과의 경계를 허물리 없다고 생각했다.
역시나 애플은 구글과 마이크로소프트 등의 웹 생태계를 주도적으로 이끌어가는 조직과 다르게 PWA 관련 기술(푸시 알림 포함)에 대해 적극적으로 대응하지 않았고, 그 결과로 Safari 브라우저에서만 지원하지 않는 API가 여럿 생기게 되었다.
현 상황에서 macOS 그리고 iOS와 iPadOS 유저들이 사용하는 Safari 브라우저의 점유율은 결코 무시할 수 없는 수준이기에, 웹(PWA)이 힘을 얻고 영향력을 펼치려면 Safari 브라우저의 적극적인 PWA 지원이 필요한 상황이었다.
PWA에 대해 관심이 많았던 본인은, WWDC20부터 웹 푸시에 대한 내용을 기다려왔으나 항상 기대했던 것과는 다른 내용만 얻었기에 다소 아쉬움이 많았다. 그러던 중 최근 진행되었던 애플 개발자 행사인 WWDC22의 Meet Web Push for Safari 세션에서 드디어 웹 푸시에 관한 내용이 언급되었다.
Web Push is supported in Mac Safari beginning with macOS Ventura. And Web Push will be coming to iOS and iPadOS next year.
이번에 발표한 내용에 따르면 웹 푸시를 지원하는 사파리 버전은 아래와 같다.
Safari 16 (macOS 13, Ventura 부터)
iOS 및 iPadOS는 내년(2023년)부터 지원
다행인 점은 애플 독자적인 웹 푸시가 아니라, 다른 브라우저들에서 구현되어있는 웹 푸시 표준을 따른다고 한다. (애플의 복잡한 인증서 없이도 간단히 푸시 알림을 제공할 수 있다)
아직 MDN Web Docs의 웹 푸시 API 호환성 표가 업데이트되지 않았는데, 곧 업데이트될 것 같고 내년에는 iOS Safari 에도 체크 아이콘이 생기게 될 것으로 보인다.
아직 업데이트 되지 않은 Push API 호환성 표
조만간 위 호환성 표 속의 Safari X 아이콘은 역사 속으로 사라질 것이다.
어쨌든, 애플이 포기한 줄만 알았던 웹 푸시를 지원해준다고 하니 앞으로의 웹 기술이 어떻게 변화할지 기대가 된다.
👀 웹 푸시 동작 살펴보기
웹 푸시가 전반적으로 어떻게 동작하는지 메커니즘에 대해 살펴보도록 하자.
🚀 풀(Pull)과 푸시(Push)
먼저 풀(Pull)과 푸시(Push)의 차이를 아래 그림을 보며 살펴보자.
위: 풀(Pull), 아래: 푸시(Push)
풀(Pull)은 대부분의 애플리케이션에서 쉽게 살펴볼 수 있는 동작 방식이다.
클라이언트 기준으로 보았을 때, 풀(Pull) 단어의 의미와 동일하게 데이터를 당겨오는 모습을 볼 수 있다.
서버에 있는 특정 데이터를 받기 위해 먼저 요청하고, 그 결과를 돌려받는 형태를 의미한다.
푸시(Push)는 풀과 동작하는 모습이 조금 다르다.
서버에서 클라이언트로 데이터를 밀어 넣는(Push) 모습을 볼 수 있으며, 클라이언트가 먼저 요청을 보내지 않더라도 서버가 데이터를 밀어 넣어주는 형태이다.
👨👩👧👦 웹 푸시의 구성 요소
웹 푸시가 동작하기 위해서는 기본적으로 필요한 구성 요소가 있다.
웹 푸시의 기본 구성요소
브라우저 (사용자)
푸시 알림을 발송할 서버
푸시 알림을 사용자에게 전달할 푸시 서비스
크게 보면 총 3가지로 이루어져 있다.
서버에서 어떤 사용자에게, 어떤 메시지를 보낼지에 대한 내용이 담긴 메시지 데이터 를 푸시 서비스로 전달하면, 푸시 서비스에서 사용자 정보 를 식별한 후 목적지로 전달 한다.
웹 푸시이기 때문에 여기서 이야기하는 목적지는 브라우저가 된다.
어떤 요소로 이루어져 있고, 대략 어떤 흐름인지 알 것만 같은데 밑줄로 강조한 부분에 대해선 의문점이 생겼을 것이다.
이 부분을 알기 위해서는 웹 푸시 기능을 제공하기 위해 정해진 규약. 즉, 웹 푸시 프로토콜(Web Push Protocol)에 대해 알아야 한다.
🤙 웹 푸시 프로토콜
웹 푸시 프로토콜(Web Push Protocol)은 푸시 알림을 수신하는 브라우저와 발송하는 서버가 푸시 서비스와 상호작용하기 위해 정해놓은 규약이다.
클라이언트(브라우저) 정보를 등록하고, 서버에서 메시지를 발송하고, 최종적으로 사용자에게 도달하기까지 여러 절차를 거치게 된다.
절차에 대한 부분은 아래 그림을 통해 간략히 살펴볼 수 있다.
웹 푸시 아키텍쳐
먼저 푸시를 수신하게 될 클라이언트(브라우저)에서는 푸시 서비스로 내가 누군지 알린다.
이 과정을 구독(Subscription)이라고 하며 조금 더 자세한 절차는 아래 그림과 같다.
푸시 서비스 구독
푸시 서비스로 구독 요청을 보내고, 성공적으로 구독된 경우 푸시 서비스에서는 구독 정보를 브라우저에게 돌려준다.
구독 정보에는 브라우저를 식별하는 정보 가 담겨있으며, 서버에서 특정 브라우저(사용자)에게 푸시 메시지를 발송할 때 이 정보가 필요하다.
구독 정보는 서버에 저장해두었다가, 푸시 알림 발송이 필요할 때 꺼내서 사용하는 형태가 된다.
여기까지의 과정이 마무리되었다면, 브라우저가 푸시 알림을 수신하기 위한 과정은 모두 끝났다.
이제 서버에서 푸시 서비스로 구독 정보와 메시지를 전달하면 해당하는 브라우저로 푸시 알림이 전달될 것이다.
🔐 안전한 메시지를 위한 VAPID
우리가 놓치지 말아야 할 부분은 서버에서 푸시 메시지를 전달할 때 그냥 전달하지 않는다는 점이다. 푸시 메시지는 민감하기 때문에 안전하게 암호화되어야 하고, 메시지가 어떤 서버에서 발송되었는지 알 수 있어야 한다.
웹 푸시에서는 어떤 서버에서 메시지를 발송했는지 식별하기 위해 VAPID(Voluntray Application Server Identification) 인증 방식을 사용한다.
VAPID는 자발적으로 서버(푸시 메시지를 발송하는)를 식별하는 인증 방식이다.
VAPID는 간단하게 보면 공개키 암호화 방식의 키 쌍으로 검증 절차를 거치는데, 먼저 공개키 암호화 방식에 대해 간략히 알아보자.
공개키 암호화 예시
공개키 암호화는 비공개 키(Private Key)와 공개 키(Public Key) 쌍을 갖는다.
공개키 암호화의 경우 비공개 키와 공개 키의 값이 일치하지 않는 비대칭 암호화 방식이다.
암호화 과정이 있다면 복호화도 필요한 법인데, 공개 키로 암호화했다면 비공개 키로 복호화해야 하고, 비공개 키로 암호화했다면 공개 키로 복호화해야 한다.
이러한 특성으로 인해 전자 서명이나 인증이 필요한 부분에서 널리 사용되고 있는 암호화 기법이다.
다시 본 내용으로 돌아와서, VAPID도 공개키 암호화 방식의 키 쌍으로 이루어져 있다.
서버에서 푸시 서비스로 메시지를 전달할 때 VAPID 명세에 따른 정보가 담긴 JWT(JSON Web Token)을 함께 전달하게 되는데, 이때 이 토큰을 VAPID의 비공개 키로 서명(암호화)한다.
서명된 토큰은 반대로 푸시 서비스에서 공개 키로 복호화하여 유효성을 검증하게 된다.
이러한 절차를 통해 푸시 서비스에서 어떤 서버로부터 수신한 메시지인지, 유효한 메시지인지 검증할 수 있게 된다.
지금까지 살펴본 내용을 모아 보면 아래와 같은 흐름으로 나타낼 수 있다.
VAPID 인증과 푸시 알림
(1) 브라우저에서 푸시 서비스 구독 + VAPID 공개 키 전달
(2) 구독 정보 수신
(3) 구독 정보 서버로 전달
(4) 구독 정보 + 메시지 + VAPID 비공개 키로 암호화된 JWT
(5) VAPID 공개 키로 유효성 검증 & 검증된 경우 구독 정보에 해당하는 브라우저로 푸시 메시지 발송
4, 5번 과정에서 데이터가 위조되거나, 키가 일치하지 않는 경우 푸시 메시지는 유효하지 않은 상태가 되어 브라우저까지 도달하지 못하고 푸시 서비스에서 폐기된다.
더보기 VAPID 인증 과정을 Node 환경에서 구현해본 코드가 존재하는데 관심이 있다면 한 번 살펴보면 좋을 것 같다.
웹 푸시의 전체적인 흐름은 지금까지 살펴본 것과 같다.
복잡하게 느껴질 수도 있지만 코드를 작성하다보면 훨씬 쉽게 와닿을 것이다.
🔥 웹 푸시 구현하기
원활한 진행을 위해 웹 푸시 데모 코드를 준비하였다.
아래 깃허브 주소에서 코드를 다운로드 받고, 코드와 동작을 확인해보자.
https://github.com/leegeunhyeok/web-push
README 파일에 정리되어있는 내용대로 환경을 세팅하도록 하자.
준비가 되었다면 데모 서버를 실행시킨 후 페이지에 접속하여 다음 내용들을 하나씩 살펴보자.
웹 푸시 기능은 웹 워커 중 한 종류인 서비스 워커(Servier Worker)를 통해 구현할 수 있으며, 브라우저의 백그라운드 환경에서 처리된다.
(서비스 워커에 대한 자세한 내용은 추후 작성할 예정이다)
모던 브라우저(이젠 Safari 포함)에는 웹 푸시 알림을 제공하기 위한 API들이 구현되어있다.
푸시 서비스를 구독하고, 메시지를 수신하기 위한 Push API, 그리고 알림을 사용자에게 노출시키기 위한 Notification API가 있다.
이에 대한 부분을 간략히 살펴보고 지나가도록 하자.
🙋 Notification API
브라우저에서 시스템 알림을 띄우기 위한 기능을 제공한다. 우리는 이를 통해 여러 플랫폼(윈도우, 맥, 리눅스, 안드로이드, iOS )에 맞는 시스템 알림을 쉽게 띄울 수 있다.
Notification API를 통해 수행 가능한 대표적인 기능은 아래와 같다.
알림 권한 요청하기
알림 권한 상태
알림 띄우기
(색상으로 강조한 부분에 대해서만 간단히 살펴본다)
알림 권한은 아래와 같이 쉽게 파악할 수 있다.
Notification.permission; // ‘default’, ‘denied’, ‘granted’
기본 상태는 default이며, 아직 브라우저에서 사용자에게 권한을 물어보지 않은 상태를 의미한다.
브라우저에서 사용자에게 권한을 물어본 후 사용자가 선택한 동작에 따라 두 가지 상태로 나눠진다.
알림 권한 확인 모습
사용자가 거부한 경우 denied, 허가한 경우 granted가 되며, 이 상태에서는 더 이상 권한 변경이 불가하다. (사용자가 직접 브라우저 설정을 통해 변경해야 한다.)
권한이 허가 상태인 경우 알림을 띄울 수 있게 된다. 알림을 띄우는 방법은 크게 두 가지가 있는데 알림 객체를 생성하는 것과 서비스 워커의 showNotification 메소드를 호출하는 것이다. 여기서는 후자 방식에 대해 알아본다.
먼저 알림을 띄우는 코드를 살펴보자.
registration.showNotification(title, { body: ‘Some message’, });
서비스 워커 등록 객체에는 알림을 띄울 수 있는 showNotification 메소드가 구현되어있다.
첫 번째 인자로는 알림의 제목, 두 번째 인자로는 알림의 본문 그리고 기타 옵션들이 전달된다.
알림 권한이 부여(granted)되어있다면, 정상적으로 시스템 알림이 표시될 것이다.
🔔 Push API
Push API는 푸시 서비스로부터 전송된 메시지를 수신할 수 있는 기능을 제공한다.
이를 통해 사용자가 푸시 알림을 수신하고, 웹 애플리케이션에 재참여할 수 있도록 기반 기능을 제공한다.
웹 애플리케이션이 푸시 메시지를 수신하기 위해서는 활성화 되어있는 서비스 워커 가 필요하다.
서비스 워커는 브라우저 백그라운드 환경에서 동작하고, 푸시 메시지를 수신했을 때 이벤트 핸들러를 통해 수신한 메시지를 처리할 수 있다.
Push API의 주요 기능을 나열해보면 아래와 같다.
푸시 서비스 구독 및 해지
푸시 메시지 수신
⚙️ 서비스 워커 등록하기
푸시를 수신하기에 앞서 서비스 워커 등록이 필요하다. 서비스 워커는 다른 웹 워커와 마찬가지로 워커 스크립트를 로드하여 설치 & 활성화시킬 수 있다.
async function registerServiceWorker () { if (!(‘serviceWorker’ in navigator)) return; // 이미 등록되어있는 정보 가져오기 let registration = await navigator.serviceWorker.getRegistration(); if (!registration) { // 없으면 서비스 워커 등록 registration = await navigator.serviceWorker.register(‘/service-worker.js’); } }
navigator 객체에 serviceWorker가 존재하는지 확인하여 현재 브라우저가 서비스 워커를 지원하는지 확인할 수 있다.
존재하지 않을 경우 기능 사용이 불가하니 분기 처리가 반드시 필요하다.
navigator.serviceWorker.getRegistration을 통해 서비스 워커의 등록 객체를 가져올 수 있다.
아직 서비스 워커가 등록되어있지 않다면 null을 반환하기 때문에 값의 유무를 통해 기존 등록 객체를 사용할지, 새로 서비스 워커를 등록할지 결정할 수 있다.
서비스 워커 등록은 navigator.serviceWorker.register를 통해 진행할 수 있다. 첫 번째 인자에는 서비스 워커 스크립트가 위치한 경로를 문자열로 전달하면 되고, 다운로드와 설치 과정은 브라우저에서 알아서 처리한다.
🌝 푸시 서비스 구독하기
서비스 워커가 등록되었다면 등록 객체를 통해 푸시 매니저(Push Manager)에 접근할 수 있다.
registration.pushManager;
서비스 워커 등록 객체에 pushManager가 없다면, 푸시 알림을 지원하지 않는 브라우저이니 이 또한 조건을 통해 분기 처리가 가능하다.
앞서 살펴보았던 내용 중 푸시 알림이 동작하는 흐름을 되짚어보면, 첫 번째로 클라이언트(브라우저)에서 푸시 서비스를 구독했던 것을 기억할 것이다.
푸시 서비스 구독은 푸시 매니저를 통해 처리 가능하고, 코드로 구현하자면 아래와 같다.
const subscription = await registration.pushManager.subscribe({ applicationServerKey: VAPID_PUBLIC_KEY, userVisibleOnly: true, });
푸시 매니저에 구현되어있는 subscribe 메소드를 통해 푸시 서비스에게 구독 요청을 보낼 수 있고, 이 과정에서 알림을 수신하기 위해 브라우저가 사용자에게 권한을 확인하는 절차를 수행하게 된다.
구독 요청을 위해 subscribe를 호출할 경우 반드시 사용자 제스처가 필요한데, 이는 개발자가 악의적으로 푸시 서비스에 구독하는 것을 방지하기 위함이다. 즉, 반드시 사용자가 어떠한 행위를 해야 구독 요청이 허용된다. (예: 버튼 클릭 등)
구독 요청을 보내기 위해서는 서버를 식별하기 위한 VAPID 공개키(applicationServerKey)와, 푸시 메시지가 사용자에게 보이는 용도로 사용된다는 것을 의미하는 플래그 값(userVisibleOnly)이 필요하다.
데모 코드 환경을 준비하면서 VAPID 키 쌍을 생성했을텐데 default.json에 정상적으로 넣어두었다면, API를 통해 공개키를 받아온 후 applicationServerKey 프로퍼티 값으로 사용될 것이다.
userVisibleOnly 값은 반드시 true 이어야 하고, 수신한 푸시 메시지는 알림을 통해 반드시 사용자에게 보여주어야 함을 의미한다.
정상적으로 구독 되었다면, 구독 정보를 받아볼 수 있다.
구독 정보는 아래와 같은 형태로 구성되어 있으며, 서버에서는 푸시 메시지를 발송할 때 해당 구독 정보를 함께 전달하게 된다.
{ “endpoint”: “https://web.push.apple.com/QHnG_a…BVMI”, “keys”: { “p256dh”: “BC56…kSB9-Vcq8”, “auth”: “fz8…sA” } }
데모 코드를 살펴보면 아래와 같이 구독 정보를 서버로 전달하는 코드를 확인할 수 있다.
async function postSubscription (subscription?: PushSubscription) { … const response = await fetch(‘/subscription’, { method: ‘POST’, headers: { ‘Content-Type’: ‘application/json’, }, body: JSON.stringify({ userId, subscription }), }); }
데모 코드에서는 전달한 구독 정보를 사용자 ID와 매핑하여 서버 측에 저장해두게 된다.
🌚 푸시 서비스 구독 취소하기
푸시 서비스 구독 취소는 더 간단하게 구현할 수 있다.
푸시 서비스 구독 후 전달받은 구독 정보에 구현되어있는 unsubscribe 메소드를 호출하기만 하면 된다.
const unsubscribed = await subscription.unsubscribe();
Promise 결과 값으로는 취소 성공 여부를 boolean 값으로 반환한다.
데모 코드에서는 구독을 취소한 경우 서버에도 이 사실을 알려 저장해두었던 사용자의 구독 정보를 함께 제거하도록 구현되어있다.
✉️ 푸시 메시지 보내고 & 받기
푸시 메시지를 보내기 위해서는, 서버에서 웹 푸시 프로토콜에 따라 푸시 서비스로 메시지를 전달해야 한다.
직접 구현한다면 상당히 복잡할 텐데, 다행히 웹 푸시 프로토콜 표준에 맞게 구현되어있는 여러 라이브러리들이 존재한다.
데모 코드에서는 web-push 라이브러리를 사용하여 구현했으니 참고 바란다.
서버 쪽에서 푸시 메시지를 어떻게 보내고 있는지 코드를 확인해보자.
import webpush from ‘web-push’; webpush.setGCMAPIKey(GCM_KEY); webpush.setVapidDetails( SUBJECT, VAPID_PUBLIC, VAPID_PRIVATE ); webpush.sendNotification(subscription, JSON.stringify({ title: ‘Web Push | Getting Started’, body: message || ‘(Empty message)’, }));
서버 코드를 살펴보면 위와 같은 코드가 존재하는데, web-push 라이브러리를 통해 아주 간단히 발송 코드를 구현할 수 있다.
푸시 알림을 발송하기 전에 기본적인 구성(GCM 키 및 VAPID 키 등록)을 진행하고, 라이브러리 수준에 구현되어있는 sendNotification 메소드를 호출하여 푸시 메시지를 발송한다.
발송할 때, 구독 정보와 메시지 데이터를 함께 전달하는 것을 확인할 수 있다.
발송한 푸시 메시지는 푸시 서비스를 거쳐 목적지인 브라우저에 도달하게 된다.
브라우저에 푸시 메시지가 도달한 경우 서비스 워커의 push 이벤트를 통해 이를 처리할 수 있는데, 서비스 워커 코드를 잠시 살펴보도록 하자.
self.addEventListener(‘push’, (event: PushEvent) => { const message = event.data?.json() as PushMessage; event.waitUntil( self.registration.showNotification(message.title, { body: message.body, }) ); }); self.addEventListener(‘notificationclick’, (event: NotificationEvent) => { self.clients.openWindow(‘https://github.com/leegeunhyeok/web-push’); });
서비스 워커 코드의 일부분을 가져왔다.
여기서 확인할 부분은 push 이벤트 핸들러 부분이다. push 이벤트는 푸시 서비스로부터 메시지를 수신했을 때 트리거 되며, 브라우저가 닫혀있더라도 서비스 워커에서 이를 수신하여 처리할 수 있다.
self.registration 부분은 서비스 워커 등록 객체를 의미하며, showNotification은 앞서 살펴보았던 Notification API의 기능 중 하나이다. 즉, 해당 코드는 이벤트 객체에서 수신한 메시지 데이터를 꺼내온 후 알림을 띄우는 코드라고 볼 수 있다.
아래의 notificationclick 이벤트는 이벤트 명에서 유추할 수 있듯이 사용자가 알림을 눌렀을 때 트리거되는 이벤트이다.
사용자가 푸시 알림을 수신하고, 이를 클릭했을 때 어떠한 동작을 처리해야 할 때 해당 이벤트 핸들러에서 로직을 구현하면 된다.
(예: 푸시 알림 클릭 시 특정 웹 페이지 열어주기)
⭐️ 푸시 알림 동작 확인해보기
지금까지 핵심 기능과 코드를 살펴보았다.
푸시 서비스를 구독하고, 실제로 푸시 메시지를 받아 시스템 알림이 뜨는지 전반적으로 확인해보자.
데모 서버를 실행하고 페이지에 접속하면, 로그인 화면으로 이동할 것이다. 여기에서 사용자를 식별하기 위해 임의의 아이디를 입력하고 홈 화면으로 이동하자.
홈 화면
유저 ID를 safari_user로 입력한 후 이동한 홈 화면 모습이다.
각 섹션에 대해 간략히 소개하도록 하겠다.
Status: 서비스 워커 등록 여부, 푸시 알림 지원 여부, 푸시 알림 권한 그리도 구독 정보를 확인할 수 있다.
Subscribe: 푸시 서비스 구독 & 해지
Send Push Notification: 특정 사용자 ID로 푸시 메시지 전송
Logout: 로그인 화면으로 이동
먼저 푸시 서비스 구독을 위해 Subscribe 버튼을 눌러보자. 그러면 아래와 같이 알림 권한을 물어볼 것이다. 동작을 확인할 것이기 때문에 허용해주도록 하자.
(만약 거부하거나 취소한 경우 권한은 거부(denied) 상태가 되는데, 브라우저 설정으로 이동하여 권한을 재설정한 후 페이지를 새로 고침 하면 된다)
정상적으로 구독된 경우 아래와 같이 구독 정보를 Status 섹션에서 확인할 수 있다. 현재 띄워져 있는 브라우저는 푸시 알림을 수신할 수 있다.
Send Push Notification 섹션에서 Target User ID 부분에 현재 본인의 아이디를 입력한 후 Send 버튼을 눌러보자.
서버를 통해 푸시 서비스로 메시지가 전달되고, 푸시 서비스에서 본인 브라우저로 푸시 메시지를 전달하여 알림이 노출될 것이다.
데모를 통해 본인에게 푸시 메시지를 전송하거나, 다른 사용자에게 메시지를 전송할 수도 있다.
다른 사용자에게 푸시 메시지를 전송하는 과정은 아래 영상을 참고하면 좋을 것 같다.
지금까지 웹 푸시에 대해 전반적으로 살펴보았다.
네이티브에서만 구현 가능하던 푸시 알림을 웹 환경에서 구현하고, 사용자에게 기능을 제공할 수 있다는 점은 웹이라는 플랫폼에 큰 무기를 쥐어준 것이라고 생각한다.
이번에 알아본 푸시 알림 뿐만 아니라 결제 요청, 생체 인증, 파일 시스템 등 여러 가지 API 사양들이 탄생하고 구현되고 있는 가운데, 앞으로의 웹이 어떻게 변화할지 더욱더 궁금해진다.
References
반응형
웹 푸시(Webpush) 메시지 보내기
아쉽게도 마이크로소프트의 구형 인터넷 익스플로러와 애플의 Safari 브라우저에서는 기능이 작동되지 않습니다.
사용자가 데스크톱 PC에서 업무 또는 인터넷 서핑 중 푸시 메시지를 전송하면 즉시 오른쪽 하단에 푸시 메시지가 표시됩니다. 푸시메시지를 클릭하면 푸시 전송자가 설정한 웹 페이지로 이동됩니다.
앱 푸시 메시지와 달리 모바일 뿐만 아니라 데스크톱 PC에서도 메시지 수신이 가능합니다.
아쉽게도 아이폰의 Safari 브라우저에서는 기능이 작동되지 않습니다. (아이폰에서 구글 크롬 또는 네이버 웨일과 같은 기타 브라우저는 정상적으로 기능이 작동됩니다)
귀하의 사용자들에게 최신 소식을 빠르게 알리고 홈페이지 재방문율을 높이세요. 마케팅 3대 요소인 이메일, SMS 문자 메시지와 함께 사용하면 효율적입니다.
앱푸시는 사용자가 반드시 모바일 기기에 앱을 설치해야만 설치한 사용자들에게 메시지를 전송할 수 있습니다. 웹푸시는 브라우저 기반에서 작동되는 기능이므로 사용자가 앱을 설치할 필요가 없습니다.
귀하가 쇼핑몰을 운영하는 관리자라면 새로운 상품 출시, 인기있는 상품 재입고, 기간 한정 할인 이벤트에 활용해보세요.
사용자가 귀하의 홈페이지에 접속하고 푸시 권한에 동의한 후 둘러보기만 하고 홈페이지를 나갔을 때 푸시 메시지를 전송하여 홈페이지에 다시 방문하게 하는 새로운 마케팅 방법!
사진 첨부가 가능한 사진 문자 보다 가격이 매우 저렴하며 이메일 보다 수신율이 높아 많은 기업과 개인들이 활용하고 있습니다.
게시물 등록, 코멘트 등록과 같이 사용자가 어떠한 행동을 했을 때 안내성 메시지로 전송할 수 있으며 공지사항, 뉴스, 프로모션, 할인 이벤트와 같은 최근 소식을 모든 사용자에게 전달할 수 있습니다.
비볼디의 단축URL에는 웹 푸시 기능이 제공되어 옵션 체크박스에 체크만 하면 메시지를 전송할 수 있습니다. 비볼디에서 제공하는 SDK를 이용하여 귀하의 홈페이지에 접속하는 모든 방문자에게 직접 푸시 권한을 받을 수 있습니다.
짧은 단축 링크에 웹 푸시 기능 이용하기
웹 푸시 메시지 기능을 이용하기 전 준비사항
로그인 후 대시보드 페이지로 이동합니다.
웹 푸시 기능을 이용하기 전 “설정 -> 조직 설정” 메뉴로 이동하여 조직 이름, 홈페이지 주소, 조직 로고를 등록합니다.
웹 푸시 링크 만들기
웹 푸시 기능이 포함된 링크를 만드는 것은 매우 간단합니다.
링크 만들기 화면 하단의 “웹푸시 알림구독 링크” 옵션에 체크만 하면 됩니다.
아래와 같이 링크가 생성되었습니다.
생성된 짧은 링크를 클릭합니다.
생성된 링크를 클릭하면 원래의 긴 URL로 이동하기 전 푸시 권한 허용에 대한 팝업 창이 표시됩니다.
푸시 권한 팝업 창에 사용자가 허용 버튼을 클릭하면 허용한 모든 사용자들에게 푸시 메시지를 전송할 수 있습니다.
푸시 알림 팝업창이 표시될 때 자주 차단 버튼을 클릭한 사용자의 경우 자동으로 차단되어 강제 허용 버튼을 클릭해야 할 수도 있습니다.
팝업 창을 닫거나 허용 또는 차단 버튼 등 어떠한 버튼을 클릭하여도 사용자는 긴 URL로 이동하게 됩니다.
하지만 허용 버튼을 클릭하게 되면 푸시 알림에 대한 구독 처리가 되어 비볼디 대시보드 페이지에서 사용자에게 메시지를 전송할 수 있습니다.
권한 요청 팝업 창을 닫거나 차단을 하여도 아래 사진과 같이 원래의 긴 URL로 이동됩니다.
푸시메시지 보내기
몇 명의 사용자가 푸시 권한을 허용하였는지 확인하거나 푸시 메시지를 전송하려면 “알림 발송 -> 링크 알림 발송” 메뉴로 이동합니다.
아래 목록 화면 오른쪽의 “구독 날짜”는 푸시 권한 팝업 창에서 허용 버튼을 클릭한 날짜입니다.
만약, 100명의 사용자가 링크를 클릭하고 권한 팝업 창에 허용을 클릭했다면 목록에는 100개의 구독 데이터가 표시됩니다.
즉, 1개의 행은 1명의 사용자라고 이해하시면 됩니다.
목록 화면 오른쪽의 “알림 발송” 버튼을 클릭하면 푸시 메시지를 작성하는 팝업 창이 표시됩니다.
사용자에게 전송할 푸시 메시지의 제목과 내용 그리고 이미지를 첨부할 수 있습니다.
푸시 메시지는 1건 전송 당 단가는 10원으로 미리 금액이 충전되어 있어야 합니다.
푸시 권한 팝업에 허용한 사용자가 많아 매월 대량 발송을 하시는 고객은 비볼디와 별도로 단가 협의가 가능하고 월 정액제로 무제한 발송이 가능합니다.
메시지 작성을 완료한 후 “보내기” 버튼을 클릭하면 아래 사진과 같이 사용자에게 푸시메시지가 전송됩니다.
사용자가 메시지를 클릭하면 귀하가 설정한 웹 페이지로 이동됩니다.
푸시 메시지를 작성할 때 클릭 시 이동할 URL을 구글로 설정하였으므로 메시지를 클릭하면 아래 사진과 같이 구글 홈페이지로 이동됩니다.
비볼디의 웹 푸시 메시지, 문자 메시지, 이메일 발송 3개의 마케팅 도구를 이용하여 많은 방문자를 귀하의 홈페이지로 유도하세요.
푸시 메시지의 활용은 무궁무진 합니다.
짧은 링크가 아닌 귀하의 홈페이지에 SDK를 이용하여 직접 푸시구독 처리를 하여 비볼디와 연동을 원하시는 고객님은 고객센터로 별도로 문의주시기 바랍니다.
So you have finished reading the 웹 푸시 topic article, if you find this article useful, please share it. Thank you very much. See more: 웹푸시란, 웹 푸시 API, 크롬 웹 푸시, FCM 웹 푸시, 서비스 워커 웹 푸시, 웹에서 푸시 보내기, FCM 웹 푸시 Java, FCM 웹 푸시 예제