Başlangıç
Notification Scenarios
Bildirim Olay Matrisi (Ürün Dokümanı)
Amaç
Bu doküman, uygulamada hangi durumda hangi bildirimin gönderildiğini, kime gittiğini ve kullanıcı tercihleriyle nasıl filtrelendiğini ürün diliyle özetler.
Genel Gönderim Mantığı
- Ürüne ait tüm iş kuralı bildirimleri tek merkezden gönderilir: push + in-app birlikte çalışır.
- Kullanıcının
notifications(master switch) ayarıfalseise hiçbir kategori bildirim gitmez. - Kategori ayarı (
liveStreamNotifications,paymentNotifications,followNotifications,messageNotifications,followingActivityNotifications)falseise o kategori için push ve in-app birlikte susturulur. - Eski kullanıcı kayıtlarında yeni kategori alanı yoksa sistem bu alanı
truekabul eder (geriye uyumluluk). - Bildirim metinleri recipient bazında lokalize edilir; dil kaynağı
user-settings.preferredLanguagealanıdır. preferredLanguageyoksa veya henüz senkronlanmadıysa fallback dilenkullanılır.- Authenticated request’lerde gelen
x-language/accept-languagebilgisi best-effort biçimdepreferredLanguagealanına senkronlanır; böylece cron/background bildirimleri de aynı locale ile üretilir. - Push başarısız olsa da in-app kayıt denenir; in-app başarısız olsa da push denemesi etkilenmez.
- Cihaz token yoksa push fiilen gönderilmez, ancak in-app kayıt yine oluşturulur.
Kategori Sözlüğü
live_stream: yayın lifecycle bildirimleri (hatırlatma, yayına girme zamanı, hedef tamamlandı, iptal/expire gibi).payments: iade ve kredi transferi alımı.follows: yeni takipçi.messages: yeni mesaj.following_activity: takip edilen kişinin yayına başlaması.
Olay Bazlı Senaryolar
1) Yeni Takipçi
- Ne zaman: Kullanıcı ilk kez başka bir kullanıcıyı takip ettiğinde.
- Kime: Takip edilen kullanıcıya.
- Kategori:
follows. - Bildirim metni: Başlık
Yeni takipçi, mesajX sizi takip etti. - Lokalizasyon: Başlık ve mesaj recipient
preferredLanguagedeğerine göretr/enüretilir. - Yönlendirme: Profil ekranı (takip eden kullanıcının profiline).
- Ek not: Aynı kullanıcı zaten takipteyse tekrar bildirim üretilmez.
2) Yeni Mesaj
- Ne zaman: Sohbette yeni mesaj oluşturulduğunda.
- Kime: Gönderen dışındaki sohbet üyelerine.
- Kategori:
messages. - Bildirim kanalı: Sadece push. In-app kayıt oluşturulmaz.
- Bildirim metni:
- Karşılıklı takip yoksa başlık
Yeni mesaj, mesajYeni bir mesajınız var.. - Gönderen ve alıcı karşılıklı takipleşiyorsa ve mesaj tipi
textise push body içinde normalize edilmiş mesaj önizlemesi gösterilir.
- Karşılıklı takip yoksa başlık
- Lokalizasyon: Başlık ve generic body recipient locale’a göre üretilir; mesaj önizlemesi translate edilmez, gönderenin ham içeriği gösterilir.
- Yönlendirme: Chat ekranı (chatId + senderId metadata ile).
- Ek not: Önizleme sadece
textmesajlarda, whitespace normalize edilerek ve en fazla 120 karakter olacak şekilde gönderilir.mediave diğer mesaj tiplerinde generic metin korunur.
3) Kredi Transferi Alımı
- Ne zaman: Kredi transferi işlemi başarılı olup transfer mesajı oluşturulduğunda.
- Kime: Krediyi alan kullanıcıya.
- Kategori:
payments. - Bildirim metni: Başlık
Kredi transferi alındı, mesajN kredi hesabınıza transfer edildi.. - Lokalizasyon: Başlık ve mesaj recipient locale’a göre
tr/enüretilir. - Yönlendirme: Chat ekranı (transferin geldiği konuşmaya yönlendirecek metadata ile).
- Ek not: Bu akış ödeme bildirimi olarak ele alınır.
4) Takip Ettiklerimden Aktivite (Yayın Başladı)
- Ne zaman: Takip edilen kullanıcı yayına ACTIVE durumda başladığında.
- Kime: Yayın sahibini takip eden kullanıcılara.
- Kategori:
following_activity. - Bildirim metni: Başlık
Takip ettiğiniz biri yayında, mesajX canlı yayına başladı(başlık varsa yayın adıyla). - Lokalizasyon: Başlık ve mesaj recipient locale’a göre üretilir.
- Yönlendirme: Canlı yayın ekranı.
- Ek not: Yayın sahibinin kendisine bu bildirim gitmez.
5) Planlı Yayın Öncesi Hatırlatma (10/5/3/1 dk)
- Ne zaman: Planlı yayından 10, 5, 3 ve 1 dakika önce.
- Kime: Yayın sahibi ve yayın misafirlerine.
- Kategori:
live_stream. - Bildirim metni: Dakikaya göre başlık (ör.
Yayına 5 Dakika Kaldı!), rol bazlı mesaj (host/guest copy farklı). - Lokalizasyon: Dakikaya göre başlık varyasyonları ve role bazlı mesaj recipient locale’a göre üretilir.
- Yönlendirme: Ana sayfa (streamId metadata ile).
- Ek not: Aynı dakika eşiği için duplicate gönderim engellenir.
6) Yayına Girme Zamanı Geldi (Scheduled -> Preparing)
- Ne zaman: Planlanan yayın zamanı gelip yayın PREPARING durumuna geçirildiğinde.
- Kime: Yayın sahibi ve yayın misafirlerine.
- Kategori:
live_stream. - Bildirim metni: Başlık
Yayın Zamanı Geldi!, rol bazlı mesaj (host için yayınını başlatma, guest için yayına katılma). - Lokalizasyon: Başlık ve role bazlı mesaj recipient locale’a göre üretilir.
- Yönlendirme: Live entry ekranı (stream role metadata ile).
7) DuoCrowd Hedef Tamamlandı
- Ne zaman: Bağış sonrası toplanan fon, hedefi ilk kez geçtiğinde/eşitlediğinde.
- Kime: Yayın sahibi ve misafirlere.
- Kategori:
live_stream. - Bildirim metni: Başlık
Hedef Tamamlandı!, mesajCrowd funding hedefi tamamlandı.... - Lokalizasyon: Başlık ve mesaj recipient locale’a göre üretilir.
- Yönlendirme: Host ve guest için farklı metadata kullanılır (host: home, guest: fund-for-you).
8) DuoCrowd Başarısız Oldu (Expire) -> İade
- Ne zaman: Planlı DuoCrowd yayın zamanı geçip fon hedefi toplanamadığında.
- Kime: İade alacak destekçilere.
- Kategori:
payments. - Bildirim metni: Başlık
İade Yapıldı, mesajYayın gerçekleşmediği için N credit iade edildi.. - Lokalizasyon: Başlık ve mesaj recipient locale’a göre üretilir.
- Yönlendirme: Ana sayfa.
- Ek not: Aynı kullanıcı aynı yayın için birden fazla fund yaptıysa refund tutarı kullanıcı bazında toplanır ve tek bildirim gönderilir.
9) DuoCrowd Başarısız Oldu (Expire) -> Yayın Ekibi Bilgilendirmesi
- Ne zaman: Planlı DuoCrowd yayın expire olduğunda.
- Kime: Yayın sahibi ve misafirlere.
- Kategori:
live_stream. - Bildirim metni: Başlık
Yayın Süresi Doldu, mesajda toplanan/hedef bilgisi. - Lokalizasyon: Başlık ve mesaj recipient locale’a göre üretilir.
- Yönlendirme: Ana sayfa.
10) Planlı Yayın İptali (Role Bilgilendirmesi)
- Ne zaman: Host veya davetli guest planlı yayını iptal ettiğinde.
- Kime: Yayın sahibi + misafirler (role set).
- Kategori:
live_stream. - Bildirim metni: Başlık
Yayın İptal Edildi, role göre farklı metin + iptal nedeni. - Lokalizasyon: Başlık ve role bazlı mesaj recipient locale’a göre üretilir.
- Yönlendirme: Ana sayfa.
- Ek not: Kullanıcı refund da alıyorsa role bildirimi yerine yalnızca refund bildirimi gider.
11) Planlı Yayın İptali (Refund Bilgilendirmesi)
- Ne zaman: İptal sonucunda kullanıcıya kredi iadesi oluştuğunda.
- Kime: İade alan tüm kullanıcılara (yayın ekibi + destekçiler dahil).
- Kategori:
payments. - Bildirim metni: Başlık
İade Yapıldı, mesajda iptal nedeni + iade miktarı. - Lokalizasyon: Başlık ve mesaj recipient locale’a göre üretilir.
- Yönlendirme: İşlem geçmişi ekranı.
- Ek not: İptal+refund çakışmasında ürün kuralı gereği refund bildirimi önceliklidir.
- Ek not: Aynı kullanıcı aynı yayın için birden fazla fund yaptıysa refund tutarı kullanıcı bazında toplanır ve tek bildirim gönderilir.
Kapsam Dışı / İstisnalar
POST /notifications/testvePOST /notifications/test/usernametest push uçları tercih filtresinden etkilenmez.POST /notificationsile manuel in-app kayıt oluşturma akışı tercih filtrelemesinden bağımsızdır.
Mobil Tüketim Notu
- Listeleme tarafında
GET /notificationsendpoint’icategoryile filtrelenebilir. - Her bildirim payload’ında
categoryalanı döner; mobil taraf kategori bazlı sekme/filtre yapabilir. - Kullanıcı tercih ekranı için
GET /user-settingsvePATCH /user-settingskullanılmalıdır. preferredLanguagealanı da aynı endpoint üzerinden okunur/güncellenir.