Real-Time Engagement: Web Push Notifications in Rails 8
Gli sviluppatori solitari spesso si scontrano con un muro quando costruiscono funzionalità mobile. Un tempo era necessaria un'app nativa per inviare notifiche push. Se non ne avevi una, dovevi affidarti all'email o a costosi SMS.
La Web Push API cambia tutto. Funziona su quasi tutti i browser, incluso Safari su iOS. Puoi inviare avvisi direttamente dalla tua app Rails al dispositivo dell'utente. Non è necessario scaricare nulla da un App Store.
Ecco come configurarla in Rails 8.
The Workflow
- Subscription: L'utente clicca su "consenti" nel browser. Il browser fornisce un oggetto di sottoscrizione.
- Storage: Salvi questo oggetto nel tuo database associandolo all'utente.
- The Push: Il tuo server Rails invia un messaggio firmato al servizio push del browser.
- Delivery: Il service worker sul dispositivo mostra la notifica.
Setup Steps
Security Hai bisogno delle chiavi VAPID per identificare il tuo server. Questo impedisce agli hacker di inviare avvisi falsi. Aggiungi la gem
web-pushal tuo Gemfile. Eseguiweb-push generate-vapid-keysnel tuo terminale. Salva queste chiavi nel tuo file delle credenziali.Database Gli utenti spesso hanno più dispositivi. Crea un modello per memorizzare le sottoscrizioni. Esegui:
rails g model WebPushSubscription user:references endpoint:string p256dh_key:string auth_key:stringEsegui:rails db:migrateService Worker Crea
public/service-worker.js. Questo file viene eseguito anche quando il tuo sito web è chiuso. Ascolta l'evento push e mostra la notifica.Frontend Registra il worker in
application.js. Usa un controller Stimulus per richiedere il permesso. Invia i dati di sottoscrizione al tuo controller Rails tramite una richiesta POST.Background Jobs Non inviare mai le notifiche nel ciclo di richiesta principale. Usa un background job per evitare di rallentare la tua app. Crea un
SendWebPushJob. Cicla attraverso le sottoscrizioni di un utente. Usa la gemweb-pushper inviare il payload. Elimina le sottoscrizioni se non sono più valide.
Puoi costruire un'app che sembri un'esperienza mobile nativa usando solo Rails e piccole quantità di Javascript.
Source: https://dev.to/zilton7/real-time-engagement-web-push-notifications-in-rails-8-5gdp
