Come implementare le Web Push Notifications in Laravel

Come implementare le Web Push Notifications in Laravel

Le Web Push Notifications sono un potente strumento per coinvolgere gli utenti in tempo reale, inviando loro notifiche direttamente sul loro browser anche quando non sono attivamente sul tuo sito. Laravel, un popolare framework PHP, fornisce un supporto robusto per l'implementazione di queste notifiche. In questo articolo, vedremo come configurare e utilizzare le Web Push Notifications in un'applicazione Laravel.

Prima di iniziare, assicurati di avere i seguenti strumenti installati:

  • PHP (versione 7.3 o superiore)
  • Composer
  • Laravel (versione 8 o superiore)
  • Un browser che supporti le Web Push Notifications (come Chrome o Firefox)

Innanzitutto, dobbiamo installare un pacchetto che ci aiuti a gestire le notifiche push. laravel-webpush è una scelta popolare e supporta la maggior parte delle funzionalità necessarie. Puoi installarlo usando Composer:


composer require laravel-notification-channels/webpush

Dopo aver installato il pacchetto, dobbiamo configurarlo. Pubblica il file di configurazione eseguendo il seguente comando:


php artisan vendor:publish --provider="NotificationChannels\WebPush\WebPushServiceProvider"

Questo comando creerà un file di configurazione chiamato webpush.php nella cartella config.

Ora occorre generare le chiavi VAPID. Le chiavi VAPID (Voluntary Application Server Identification) sono utilizzate per autenticare i server che inviano le notifiche. Puoi generare queste chiavi usando il comando fornito dal pacchetto:


php artisan webpush:vapid

Copia le chiavi generate nel file di configurazione webpush.php:


return [
    'vapid' => [
        'subject' => 'mailto:your-email@example.com',
        'public_key' => env('VAPID_PUBLIC_KEY'),
        'private_key' => env('VAPID_PRIVATE_KEY'),
    ],
];

Assicurati di aggiungere le chiavi generate nel file .env:


VAPID_PUBLIC_KEY=your_public_key
VAPID_PRIVATE_KEY=your_private_key

Ora, dobbiamo creare una notifica che verrà inviata agli utenti. Usa il comando artisan per creare una notifica:


php artisan make:notification WebPushNotification

Nel file WebPushNotification.php, puoi configurare il contenuto della notifica:


use NotificationChannels\WebPush\WebPushMessage;

public function toWebPush($notifiable, $notification)
{
    return (new WebPushMessage)
        ->title('Titolo della Notifica')
        ->icon('/path/to/icon.png')
        ->body('Corpo del messaggio della notifica.')
        ->action('Visualizza', 'view_action');
}

Gli utenti devono iscriversi per ricevere le notifiche push. Questo significa che dobbiamo memorizzare i loro endpoint nel database. Aggiorna il modello User per implementare il HasPushSubscriptions trait:


use NotificationChannels\WebPush\HasPushSubscriptions;

class User extends Authenticatable
{
    use HasPushSubscriptions;
}

Aggiungi una rotta e un controller per gestire le iscrizioni:


Route::post('/subscribe', [PushSubscriptionController::class, 'subscribe'])->name('push.subscribe');

Nel PushSubscriptionController, salva le informazioni di iscrizione:


use Illuminate\Http\Request;

class PushSubscriptionController extends Controller
{
    public function subscribe(Request $request)
    {
        $request->user()->updatePushSubscription(
            $request->endpoint,
            $request->publicKey,
            $request->authToken,
            $request->contentEncoding
        );
    }
}

Ora siamo pronti per inviare le notifiche. Puoi farlo da qualsiasi parte del tuo codice dove hai accesso al modello User:


use App\Notifications\WebPushNotification;

$user = User::find(1); // Ad esempio, un utente specifico
$user->notify(new WebPushNotification());

Conclusione

L'implementazione delle Web Push Notifications in Laravel può sembrare complessa, ma seguendo questi passaggi puoi configurare rapidamente un sistema robusto per inviare notifiche push ai tuoi utenti. Questo ti permetterà di migliorare l'engagement e la comunicazione in tempo reale con la tua audience.

Torna su