Web Push
VAPID tabanlı tarayıcı push kanalı — kurulum, tarayıcı desteği, service worker, izin istemleri, içerik alanları ve sorun giderme.
Web Push, tarayıcının push servisi (Chrome/Edge → FCM, Firefox → Mozilla, Safari → APNs) üzerinden gider; Pushizo app'inizin VAPID anahtar çiftiyle imzalar. Kullanıcı tarafı Web SDK ile, kurulum Web hızlı başlangıç ile yapılır.
Kurulum
- App ayarları → Kanallar → Web Push → Etkinleştir. VAPID çifti otomatik üretilir; genel anahtar SDK'ya
GET /sdk/v1/apps/{app_id}/configile iner, özel anahtar şifreli saklanır ve geri okunamaz. subject:mailto:ops@example.comya dahttps://example.com(push servisleri sorun hâlinde bu adrese ulaşır).- Site kökünde
PushizoSDKWorker.jsve sayfadaPushizo.init({ appId }).
API: PUT /v1/apps/{app_id}/channels/web_push { "provider": "vapid", "config": { "subject": "mailto:…" } }; doğrulama POST …/channels/web_push/validate anında active döner.
Güvenlik: tarayıcıdan gelen abonelik endpoint adresi yalnızca bilinen push servisi alan adlarına izin verir (SSRF koruması); kendi barındırdığınız ya da ek push servisleri için sunucu ortamında WEB_PUSH_EXTRA_HOSTS listesi tanımlanır.
Tarayıcı desteği
| Tarayıcı | Durum | Not |
|---|---|---|
| Chrome, Edge, Opera, Brave (masaüstü/Android) | Tam | Resim (chrome_web_image), rozet ikonu (chrome_web_badge), düğmeler (web_buttons) |
| Firefox | Tam | Resim desteklenmez; düğme sınırlı |
| Safari macOS 16+ | Tam | Standart Web Push; ikon site ikonundan |
| Safari iOS/iPadOS 16.4+ | Yalnızca ana ekrana eklenmiş PWA | iOS web push ve PWA |
HTTPS zorunludur; localhost geliştirme için allowLocalhostAsSecureOrigin: true.
İzin istemleri
Tarayıcının native istemi yalnızca kullanıcı hareketiyle açılabilir ve reddedilirse geri alınamaz; bu nedenle önce yumuşak bir istem gösterin:
- Slidedown:
init({ slidedown: { enabled: true, delaySeconds: 5, pageViews: 2, retryDays: 7, title, message, acceptText, cancelText } });collect: 'email' | 'sms' | 'email_sms'ile e-posta/SMS toplama. - Zil (bell): sağ/sol altta abonelik durumunu gösteren düğme.
- Özel bağlantı: kendi düğmenizden
Pushizo.Notifications.requestPermission(). - Geri çekilme takvimi: reddedilen/kapatılan istem
promptOptions.backoffDays(varsayılan 3, 7, 30 gün) sonra yeniden gösterilir.
Dashboard → Kanallar → Web Push → İzin istemi tasarımcısı slidedown metinlerini ve zamanlamayı yapılandırır; SDK config ile indirir.
İçerik alanları
| Alan | Açıklama |
|---|---|
headings, contents, url | Başlık, gövde, tıklama adresi (dil haritası) |
chrome_web_icon | Bildirim ikonu (192×192 önerilir) |
chrome_web_image | Büyük resim (Chrome/Edge) |
chrome_web_badge | Monokrom rozet (Android Chrome) |
web_buttons | [{ id, text, url? }] en fazla 2–3 düğme |
web_push_topic | Aynı konudaki önceki bildirimi değiştirir (Topic başlığı) |
require_interaction | Kullanıcı kapatana kadar açık kalır |
ttl, priority | Push servisinde bekleme süresi (sn) ve Urgency |
Bildirim tıklaması notificationClickHandlerMatch / notificationClickHandlerAction ile açık sekmeye odaklanır ya da yeni sekme açar; tıklama opened, gösterim received olarak kaydedilir (service worker API'ye token_hash ile bildirir).
Abonelik yaşam döngüsü
- Abonelik
GET /sdk/v1/apps/{app_id}/subscriptionsile kaydedilir;endpoint,keys.p256dh,keys.authtarayıcı aboneliğinden gelir. - Push servisi
404/410dönerse abonelikinvalidolur vesubscription.invalidatedwebhook'u çıkar; SDK bir sonraki açılıştaautoResubscribeile yeniden kaydeder. - Kullanıcı tarayıcı ayarından izni kaldırırsa
pushSubscription.state.permission = 'denied'olur; SDK bunu config yenilemesinde bildirir.
Sorun giderme
| Belirti | Kontrol |
|---|---|
| Abonelik oluşmuyor | HTTPS, PushizoSDKWorker.js 200 ve doğru Content-Type, konsolda Pushizo.Debug.setLogLevel('debug') |
| Bildirim gelmiyor | Dashboard Mesaj İzleme → teslimat durumu; failed ise error_code (410 → abonelik iptal) |
| Safari'de gelmiyor | macOS 16+ ya da iOS PWA; "Rahatsız etmeyin"/Odak modu |
| İkon görünmüyor | chrome_web_icon HTTPS ve erişilebilir olmalı |
Kanallara genel bakış
Pushizo'nun desteklediği kanallar (Web Push, iOS, Android, Huawei, e-posta, SMS, WhatsApp, RCS, in-app, bildirim kutusu, Live Activities), sağlayıcıları ve kurulum gereksinimleri.
iOS Push (APNs)
APNs kanalı — .p8/.p12 kimlik bilgisi, sandbox/production ortamı, iOS içerik alanları, rozet/ses/kategori, Notification Service Extension ve sorun giderme.