Rails 애플리케이션에서 웹 푸시 알림 구현 가이드

Joy of Rails | Sending Web Push Notifications from Rails

작성자
Ruby Weekly
발행일
2024년 10월 23일

핵심 요약

  • 1 Rails 8에서 기본으로 제공될 웹 푸시 알림 기능을 현재 Rails 애플리케이션에 구현하는 방법을 상세히 다룹니다.
  • 2 웹 푸시 구현은 PWA 설정, 서비스 워커, VAPID 키 생성 및 권한 요청 등 클라이언트 및 서버 측의 복합적인 설정과 연동을 요구합니다.
  • 3 `web-push` 젬을 활용하여 Rails 백엔드에서 푸시 알림을 트리거하고, 서비스 워커를 통해 사용자에게 알림을 표시하는 전체 과정을 설명합니다.

도입

Rails 8에서 웹 푸시 알림 기능이 기본으로 포함될 예정이며, 이는 사용자가 웹사이트에 접속해 있지 않아도 알림을 보낼 수 있게 하여 사용자 참여를 높이는 강력한 기능입니다. 본 문서는 Rails 환경에서 웹 푸시를 직접 구현하는 기본적인 방법을 다루며, 향후 Rails 8.1에 출시될 Action Notifier가 어떻게 작동할지 이해하는 데 도움이 될 것입니다. 성공적인 웹 푸시 구현을 위한 필수 구성 요소와 작동 방식을 개괄적으로 소개하여 개발자들이 웹 푸시 기술을 효과적으로 통합할 수 있도록 안내합니다.

웹 푸시 알림 전달 과정에는 애플리케이션 서버(Rails 앱), 사용자, 그리고 푸시 서버라는 세 가지 주요 주체가 관여합니다. Rails 애플리케이션은 구독된 사용자에게 알림을 보내기 위해 푸시 서버에 HTTP 요청을 보내고, 이 푸시 서버가 실제 알림을 사용자에게 전달하는 역할을 수행합니다. 개발자는 사용자가 웹 푸시에 구독할 수 있는 사용자 경험을 제공하고, 프론트엔드에서 구독 데이터를 Rails 백엔드로 전송하며, web-push Ruby 젬을 사용하여 푸시 서버에 요청을 보내야 합니다. 또한, 서비스 워커에서 ‘push’ 이벤트를 수신하여 사용자에게 알림을 표시하는 로직을 구현해야 합니다.

보안 측면에서는 VAPID(Voluntary Application server Identification) 프로토콜이 사용되며, web-push 젬이 이 프로토콜의 복잡한 세부 사항을 추상화하여 개발자가 VAPID 키 쌍을 생성하고 안전하게 저장하도록 돕습니다. 웹 푸시 메시지 전달을 위한 필수 조건으로는 Progressive Web App(PWA)의 manifest.json 파일 연결, 사용자 웹 브라우저에 서비스 워커 설치 및 활성화, VAPID 키 생성, 사용자 알림 권한 허용, 푸시 알림 구독, 그리고 Rails에서 web-push 젬을 사용한 알림 트리거 및 서비스 워커의 ‘push’ 이벤트 리스너 설정이 있습니다.

Rails 7.2부터는 PWA 매니페스트 JSON 및 서비스 워커 JavaScript 파일에 대한 기본값이 제공되어 설정이 더욱 용이해졌습니다. VAPID 공개 키는 클라이언트에 제공되어 pushManager.subscribe()를 통해 푸시 알림을 구독하는 데 사용되며, 이 구독 정보(엔드포인트, p256dh, auth 키)는 Rails 백엔드에 저장되어 관리됩니다. Rails 앱에서 알림을 트리거하기 위해 WebPushJob과 같은 ActiveJob을 사용하여 WebPush.payload_send 메서드를 호출합니다. 이 메서드는 메시지 페이로드, 엔드포인트, VAPID 키 등을 필요로 합니다. 최종적으로, 서비스 워커는 백그라운드에서 실행되며 ‘push’ 이벤트를 수신하여 self.registration.showNotification을 통해 사용자에게 알림을 표시함으로써 전체 웹 푸시 흐름이 완성됩니다.

결론

웹 푸시 API는 모바일 앱과의 기능 동등성 측면에서 웹의 중요한 진전이며, 사용자 참여를 유도하는 강력한 도구입니다. 현재 웹 푸시 구현은 PWA 설정, 서비스 워커, VAPID 프로토콜 등 다소 복잡한 설정 과정을 요구하지만, 향후 Rails의 Action Notifier 출시로 인해 이러한 과정이 간소화될 수 있을 것으로 예상됩니다. 그럼에도 불구하고 본 문서에서 다룬 핵심 구성 요소들을 이해하는 것은 웹 기술을 활용하여 네이티브 푸시 알림을 효과적으로 구현하는 데 여전히 중요합니다. 이 가이드는 Rails 개발자들이 웹 푸시 기능을 성공적으로 통합하고 활용하는 데 필요한 지식과 실질적인 방향을 제공할 것입니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!