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.
Hur det fungerar
Section titled “Hur det fungerar”Push-notiser i Proyecta följer den vanliga Web Push-livscykeln i fyra steg:
- Enable — generera VAPID-nycklar för din app (engångssteg)
- Subscribe — registrera en användares enhet för att ta emot notiser
- Identify — koppla en anonym prenumeration till en inloggad användare
- Send — leverera en notis till specifika användare, ämnen eller alla
Alla fyra finns under proyecta.pushNotifications i SDK:t.
Aktivera push för din app
Section titled “Aktivera push för din app”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".
Prenumerera en användares enhet
Section titled “Prenumerera en användares enhet”På klientsidan skapar du en Web Push-prenumeration med VAPID-nyckeln och skickar den sedan till servern tillsammans med ett visitorId:
// client sideconst 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 laterAnvä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,});Skicka en notis
Section titled “Skicka en notis”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 usersawait 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 topicawait 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 subscribersawait 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.
Avprenumerera
Section titled “Avprenumerera”Ta bort en prenumeration med hjälp av hemligheten som returnerades från subscribe:
await proyecta.pushNotifications.unsubscribe({ secret });Låt AI:n koppla ihop det
Section titled “Låt AI:n koppla ihop det”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."
Att tänka på
Section titled “Att tänka på”- 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.
Kommer snart
Section titled “Kommer snart”- 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å