Teslimat kuralları
Aboneleri çok fazla ya da kötü zamanlı push'tan koruyan uygulama geneli kurallar. Panel › Teslimat kuralları'nda yapılandırılır ve uygulamada şöyle saklanır:
{
"frequencyCap": { "max": 3, "windowHours": 24 },
"quietHours": { "start": "22:00", "end": "08:00", "behavior": "delay" },
"defaultTimezone": "Europe/Istanbul"
}
Nerede çalışır
Worker'da, her push için, gönderilmek üzereyken. Fan-out'ta değil. Yani:
- 21:59'da fan-out edilip push'ları worker'a 22:00'de ulaşan kampanya sessiz saatlere uyar.
- Kampanya uçuştayken değiştirdiğiniz kural, kuyrukta kalan push'lara uygulanır.
- Frekans sınırı her kampanya ve transactional gönderim boyunca, gönderim sırasına göre sayılır.
Frekans sınırı
Kayan windowHours penceresinde kullanıcı başına max push; kullanıcının tüm cihazları birlikte sayılır.
Uygulama: Redis sayacı fc:<appId>:<userId> — INCR, ilk vuruşta EXPIRE. max'ı aşacak push gönderilmez; worker meta.reason = "frequency_cap" ile skipped olayı yazar, stats.skipped'ı artırır ve webhook'lara notification.skipped atar.
İki cihaz, bir kullanıcı, sınır 3/24s: herhangi bir cihaza üç push'tan sonra pencere dönene kadar ikisi de sessizdir.
Sessiz saatler
Abonenin saat diliminde → uygulamanın defaultTimezone'unda → UTC'de değerlendirilen yerel bir pencere. start > end gece yarısını aşar.
behavior | Etki |
|---|---|
delay | Push, pencere (o kullanıcının diliminde) bitene kadar gecikmeyle yeniden kuyruğa alınır. İşte bir deferrals sayacı gider; 3 ertelemeden sonra atlanır — kötü bir saat diliminde takılı cihaz sonsuza dek iş biriktirmemeli. |
skip | Düşürülür; meta.reason = "quiet_hours" ile skipped olayı. |
Ertelenen push'lar atlanma değildir: sonra sent olarak görünür ve saatlik grafik sabah tümseğini gösterir.
Atlama
Kampanya ya da transactional gönderim başına:
{ "bypass": { "frequencyCap": true, "quietHours": true } }
Sihirbazın Gelişmiş bölümünde iki kutu var. Kullanıcının istediği ya da şimdi ihtiyacı olan push'lar için kullanın — 2FA kodu, şifre sıfırlama, "aracınız geldi" — promosyon için asla. Atlayan push'lar sonraki push'lar için frekans sınırına yine sayılır.
Kontrol sırası
Her push işi için worker sırayla değerlendirir:
- abonelik hâlâ açık ve geçersiz değil (değilse sessizce düşür),
- frekans sınırı (atlanmadıysa),
- sessiz saatler (atlanmadıysa),
- yerel saat zamanlamasından gelen
notBeforezaten işin gecikmesi olarak uygulandı, - kişiselleştir, transport, olay.
Raporlama
Kampanya raporunun Atlanma nedenleri tablosu quiet_hours ve frequency_cap'i sayar. Gönderildi kutusunun alt yazısı toplam kaçının tutulduğunu söyler.