Hoppa till innehåll

Push-notiser

Skicka Web Push-notiser till dina användare. Konfigurera med SDK:t och låt AI:n koppla ihop allt.

Varje Proyecta-app kan skicka push-notiser till webbläsare och PWA:er för sina användare. Proyecta SDK hanterar generering av VAPID-nycklar, lagring av prenumerationer, ämneshantering och leverans — inget tredjepartskonto krävs.

Push-notiser i Proyecta följer den vanliga Web Push-livscykeln i fyra steg:

  1. Enable — generera VAPID-nycklar för din app (engångssteg)
  2. Subscribe — registrera en användares enhet för att ta emot notiser
  3. Identify — koppla en anonym prenumeration till en inloggad användare
  4. Send — leverera en notis till specifika användare, ämnen eller alla

Alla fyra finns under proyecta.pushNotifications i SDK:t.

Det första anropet genererar en VAPID-offentlig nyckel som webbläsaren behöver för att skapa en prenumeration. Det är idempotent — att anropa det igen returnerar samma nyckel.

import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });
const { vapidPublicKey } = await proyecta.pushNotifications.enable();

Fråga AI:n: "Enable push notifications and store the VAPID key in a PROYECTA_VAPID_PUBLIC_KEY env var".

På klientsidan skapar du en Web Push-prenumeration med VAPID-nyckeln och skickar den sedan till servern tillsammans med ett visitorId:

// client side
const registration = await navigator.serviceWorker.ready;
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: PROYECTA_VAPID_PUBLIC_KEY,
});
// server side (or via your API route)
const { secret } = await proyecta.pushNotifications.subscribe({
visitorId: currentUser?.id ?? generateAnonymousId(),
subscription: {
endpoint: subscription.endpoint,
keys: {
auth: subscription.keys.auth,
p256dh: subscription.keys.p256dh,
},
},
});
// Store `secret` on the client — it's required to unsubscribe or identify later

Använd ett autentiserat användar-ID som visitorId om användaren är inloggad, eller ett genererat UUID för anonyma besökare.

Koppla anonyma prenumerationer till användare

Section titled “Koppla anonyma prenumerationer till användare”

När en anonym besökare loggar in kopplar du deras befintliga prenumeration till det autentiserade användar-ID:t så att nästa send kan riktas mot dem:

await proyecta.pushNotifications.identify({
secret: storedSubscriptionSecret,
userId: authenticatedUser.id,
});

Du kan rikta dig till specifika besökar-ID:n, ämnen, båda (som en union) eller sända till alla. Utelämna både visitorIds och topics för att sända till alla.

// Send to specific users
await proyecta.pushNotifications.send({
title: 'Your order has shipped',
body: 'Track it from your dashboard',
visitorIds: ['user_123', 'user_456'],
data: { orderId: 'ord_789' }, // custom payload
});
// Send to everyone subscribed to a topic
await proyecta.pushNotifications.send({
title: 'New feature just dropped',
topics: ['product-updates'],
icon: 'https://cdn.example.com/icon.png',
image: 'https://cdn.example.com/banner.png',
});
// Broadcast to all subscribers
await proyecta.pushNotifications.send({
title: 'Scheduled maintenance at 2am UTC',
});

send returnerar { sent, failed } så att du vet hur leveransen gick. Antalet i sent i det nuvarande stub-svaret återspeglar antalet lagrade prenumerationer som målades, inte faktiska webbläsarleveranser — förlita dig inte på det som en leveransbekräftelse tills produktionsleverans är aktiverad.

Användare kan prenumerera på namngivna ämnen (t.ex. product-updates, weekly-digest) via underresursen proyecta.pushNotifications.topics. Det här är det rekommenderade sättet att hantera opt-in-listor — du behöver inte hålla reda på besökar-ID:n själv för sändningsuppdateringar.

Ta bort en prenumeration med hjälp av hemligheten som returnerades från subscribe:

await proyecta.pushNotifications.unsubscribe({ secret });

Du behöver inte skriva något av det här för hand. Fråga AI:n:

  • "Enable push notifications for my app. Register a service worker, call pushNotifications.subscribe on the client after the user grants permission, and store the secret in localStorage."
  • "Send a push to all users subscribed to the 'breaking-news' topic whenever a new article is published."
  • "After a user signs in, call pushNotifications.identify to link their anonymous subscription to their user ID."
  • Preview skickar inga riktiga push-notiser. Push-notiser fungerar bara på den publicerade versionen av din app eftersom webbläsare kräver HTTPS på ett riktigt ursprung.
  • iOS kräver en PWA. På iOS 16.4+ fungerar Web Push bara från en installerad Progressive Web App (tillagd på hemskärmen), inte direkt från Safari.
  • Behörighet är en engångsfråga. Om en användare nekar notisbehörighet låter webbläsare dig inte uppmana dem igen programmatiskt. Du måste guida dem till sina webbläsar- eller enhetsinställningar.
  • Schemalagda och händelsestyrda utskick — skicka automatiskt baserat på app-händelser eller ett schema
  • Deep linking — öppna en specifik vy i appen när notisen trycks på