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ı false ise hiçbir kategori bildirim gitmez.
  • Kategori ayarı (liveStreamNotifications, paymentNotifications, followNotifications, messageNotifications, followingActivityNotifications) false ise o kategori için push ve in-app birlikte susturulur.
  • Eski kullanıcı kayıtlarında yeni kategori alanı yoksa sistem bu alanı true kabul eder (geriye uyumluluk).
  • Bildirim metinleri recipient bazında lokalize edilir; dil kaynağı user-settings.preferredLanguage alanıdır.
  • preferredLanguage yoksa veya henüz senkronlanmadıysa fallback dil en kullanılır.
  • Authenticated request’lerde gelen x-language / accept-language bilgisi best-effort biçimde preferredLanguage alanı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, mesaj X sizi takip etti.
  • Lokalizasyon: Başlık ve mesaj recipient preferredLanguage değerine göre tr / 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, mesaj Yeni bir mesajınız var..
    • Gönderen ve alıcı karşılıklı takipleşiyorsa ve mesaj tipi text ise push body içinde normalize edilmiş mesaj önizlemesi gösterilir.
  • 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 text mesajlarda, whitespace normalize edilerek ve en fazla 120 karakter olacak şekilde gönderilir. media ve 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ı, mesaj N 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, mesaj X 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ı!, mesaj Crowd 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ı, mesaj Yayı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/test ve POST /notifications/test/username test push uçları tercih filtresinden etkilenmez.
  • POST /notifications ile manuel in-app kayıt oluşturma akışı tercih filtrelemesinden bağımsızdır.

Mobil Tüketim Notu

  • Listeleme tarafında GET /notifications endpoint’i category ile filtrelenebilir.
  • Her bildirim payload’ında category alanı döner; mobil taraf kategori bazlı sekme/filtre yapabilir.
  • Kullanıcı tercih ekranı için GET /user-settings ve PATCH /user-settings kullanılmalıdır.
  • preferredLanguage alanı da aynı endpoint üzerinden okunur/güncellenir.

On this page