Ana içeriğe geç

Kavramlar

Open Notification'da her şey şu altı şeyden biridir. Bunlar netleşince panel, SDK'lar ve REST API aynı dili konuşur.

Uygulama (App)

Uygulama bir kiracıdır. Adı, slug'ı, platform başına en fazla bir kimlik bilgisi (APNs, FCM, Web Push), kendi API anahtarları, teslimat kuralları ve webhook'ları vardır. Her kullanıcı, abonelik, kampanya ve olay tam olarak bir uygulamaya aittir; sistemin çalıştırdığı her sorgu bir uygulamayla kapsanır — bir uygulamanın anahtarıyla başkasının satırlarını okumanın yolu yoktur.

Tipik kurulumlar:

  • ürün başına bir uygulama (iOS + Android + web'i olan ürün tek uygulamadır, üç kimlik bilgisiyle),
  • staging için ikinci bir uygulama; test cihazları üretim kampanyası almasın.

Kullanıcı (User)

Kullanıcı bir kişidir — kimliğin ve hedefleme özelliklerinin sahibi:

ÖzellikAnlamı
externalIdSizin kullanıcı kimliğiniz ("user_123"). Anonimken null.
tagsSerbest anahtar → string/sayı/boolean haritası. Segmentlerin filtrelediği, yer tutucuların okuduğu yer.
languageKampanya içeriğinin hangi dil sürümünün gideceğini seçer.
timezoneIANA saat dilimi. Sessiz saatleri ve "kullanıcının 19:30'unda gönder"i sürer.
countryISO 3166-1 alpha-2.

Her cihazın, login'den önce bile bir kullanıcısı vardır. externalId vermeden abone olan cihaz anonim bir kullanıcı satırı alır. Uygulamanız sonra login("user_123") çağırdığında bu anonim kullanıcı yeniden adlandırılır — ya da user_123 zaten varsa cihaz onun altına taşınır. Kurallar Kimlik sayfasında.

Abonelik (Subscription)

Abonelik bir cihazdır (ya da bir tarayıcı profili): APNs token'ını, FCM registration token'ını ya da web push endpoint'i ve şifreleme anahtarlarını tutan satır. Cihaz bilgilerini (platform, appVersion, osVersion, deviceModel, browser, standalone) ve iki anahtarı da taşır:

  • optedIn — kullanıcı abonelikten çıkınca ya da 90 gün etkinlik olmayınca false. Hedeflenmez.
  • invalidatedAt — Apple/Google/push servisi token'ın öldüğünü söylediğinde (410, Unregistered, UNREGISTERED) damgalanır. Hedeflenmez.

Telefonu ve dizüstü bilgisayarı olan kullanıcının iki aboneliği vardır. Kullanıcıya yazılan tag'ler ikisine de ulaşır — kullanıcı özellikleri her abonelik satırına kopyalanır ki segmentler, fan-out ve kişiselleştirme tek koleksiyonda kalsın.

Kampanya (Campaign)

Kampanya bir gönderimdir: içerik (dil başına), hedef, zamanlama, teslimat seçenekleri ve çalışan sayaçlar.

TürNasıl başlarNasıl görünür
KampanyaPanel sihirbazı ya da POST /v1/campaigns + /sendAdlı, segment hedefli, zamanlanmış, raporlanan.
TransactionalBackend'inizden POST /v1/notificationsBelirli kullanıcılara/cihazlara, hemen. Yine bir kampanya satırı alır (transactional: true), dolayısıyla yine raporu vardır.

Durumlar: draft → scheduled → sending → sent; yanda cancelled (fan-out öncesi) ve failed.

Olay (Event)

Olay bir push'un başına gelen tek bir şeydir:

TürYazanAnlamı
sentworkerTransport kabul etti.
failedworkerTransport reddetti; meta.code nedenini söyler.
skippedworkerBir teslimat kuralı tuttu; meta.reason quiet_hours ya da frequency_cap.
deliveredSDKCihaz bildirimi çizdi.
openedSDKKullanıcı dokundu.
clickedSDKKullanıcı bir aksiyon butonuna dokundu.
dismissedSDKKullanıcı kaydırıp kapattı (yalnızca Android ve web).

Olaylar 180 gün TTL'li time-series bir koleksiyonda yaşar ve kampanya sayaçlarına toplanır. Oranlar payda olarak delivered ile hesaplanır — bkz. Analitik.

API anahtarları

ÖnekAdNerede yaşarYapabildikleri
sk_live_…sunucu anahtarıbackend, CIkapsamlarının izin verdiği her şey: gönderim, kullanıcı yönetimi, rapor okuma
pk_live_…public anahtaruygulama paketi, web sayfasıcihaz kaydetme; o cihazın kullanıcısını güncelleme

Uygulama kimliği anahtara gömülüdür; doğrulama tek indexli sorgu + bcrypt karşılaştırmadır. Anahtarların kapsamları vardır (notifications:send, campaigns:write, …) ve Ayarlar'dan tek tek iptal edilir. Başlıklar ve hatalar için API genel bakış.

Panelin kendi girişi

Panel üyeleri (owner/admin/editor/viewer) API anahtarlarından ayrıdır. E-posta + parolayla girerler; panel API'ye sunucuyu hiç terk etmeyen paylaşılan bir ADMIN_API_TOKEN ile dahili /v1/admin yüzeyinden ulaşır. Bkz. Üyeler.