Uygulamanıza Bildirim Nasıl Eklenir: Uygulama İçi, E-posta ve Push
Bir web uygulamasına bildirim eklemek için uygulama içi bildirimlerle başlayın: bir bildirim tablosu ve okunmamış öğeleri gösteren bir zil simgesi. Kullanıcı uzaktayken bilmesi gereken şeyler için bir e-posta sağlayıcısı kullanarak e-posta ekleyin ve yalnızca zamanında uyarıların önemli olduğu durumlarda web push ekleyin; çünkü bu bir service worker, kullanıcı izni ve iPhone'da uygulamanın Ana Ekran'a kaydedilmesini gerektirir. Hangi kanalları kullanırsanız kullanın, her bildirimi sunucuda tek bir yerde oluşturun ve kullanıcıların neleri alacağını seçmesine izin verin.
Bu rehber kanalları karşılaştırır, basit bir mimari gösterir ve bir yapay zekâ uygulama oluşturucusuyla kullanabileceğiniz istemler verir.
Ana kanalların karşılaştırması
| Kanal | Kullanıcılara ne zaman ulaşır | Kurulum çabası | Çalıştırma maliyeti | En uygun olduğu durum |
|---|---|---|---|---|
| Uygulama içi (zil, kısa mesajlar) | Uygulamanızı kullanırken | Düşük | Veritabanınızın dışında bir maliyet yok | Etkinlik, bahsetmeler, durum değişiklikleri |
| E-posta | E-postalarını kontrol ettikleri her an | Orta: sağlayıcı, alan adı kurulumu | Sağlayıcınızdan e-posta başına ücret | Makbuzlar, özetler, önemli her şey |
| Web push | Tarayıcıda ya da yüklü web uygulamasında, kapalıyken bile | Orta ila yüksek | Genellikle göndermek ücretsizdir | Zamana duyarlı uyarılar |
| SMS | Neredeyse her zaman | Orta; onay kuralları geçerlidir | Mesaj başına ücret | Randevu hatırlatmaları, acil uyarılar |
| Sohbet araçları (Slack, Teams) | İş yerindeyken | Düşük ila orta | Genellikle ücretsiz | Dahili araçlar ve ekip uyarıları |
Çoğu uygulama uygulama içi ve e-postaya ihtiyaç duyar. Push ve SMS, bir randevu hatırlatması ya da hazır olan bir sipariş gibi zamanlamanın gerçekten önemli olduğu durumlarda değerlidir.
Bir bildirim sistemi nasıl bir araya gelir
Basit ve merkezi tutun:
- Bir şey olur. Bir yorum yapılır, bir ödeme başarısız olur, bir rezervasyon yarın.
- Sunucunuz tek bir fonksiyonu çağırır, örneğin
notify(user, type, data). - Bu fonksiyon kullanıcının tercihlerini kontrol eder ve bir
notificationstablosuna bir satır yazar (zil için). - Sonra o tür için kullanıcının açtığı diğer kanallara gönderir: sağlayıcınız üzerinden e-posta, Push API üzerinden push.
- Ön yüz okunmamış bildirimleri gösterir ve açıldıklarında okunmuş olarak işaretler.
Tek bir giriş noktası, bir kanal eklemenizi, metni değiştirmenizi veya tercihlere saygı göstermenizi kodda her yeri aramadan yapmanızı sağlar.
Neyi saklamalı
Bir bildirim tablosunun genellikle şunlara ihtiyacı vardır: kullanıcı kimliği, tür (örneğin comment_reply), kısa bir başlık ve metin, ilgili sayfaya bağlantı, oluşturulma zamanı ve okunma zamanı. Ayrı bir tercihler tablosu, her kullanıcının her tür için hangi kanalları istediğini saklar.
Yeni bildirimleri gösterme
- Sayfa görüntülemesinde yükleyin ve her 30–60 saniyede bir sorgulayın (poll). Basit ve güvenilirdir.
- WebSocket veya sunucu gönderimli olaylarla gerçek zamanlı güncellemeler anlık hissettirir, ancak hareketli parçalar ekler. Anlık güncellemeler önemli değilse sorgulamayla başlayın.
E-posta bildirimleri
E-posta, bir gönderim sağlayıcısı ve doğrulanmış bir alan adı gerektirir; ayrıntılar uygulamanızdan e-posta nasıl gönderilir rehberinde yer alır. Bildirimler için özellikle:
- Sunucudan gönderin, asla tarayıcıda bir sağlayıcı anahtarıyla değil.
- Sık gelen olayları toplayın. Tek bir e-postada "3 yeni yorum" üç ayrı e-postadan iyidir.
- Düşük öncelikli etkinlik için günlük veya haftalık bir özet sunun.
- Önemli olmayan e-postalara bir abonelikten çıkma veya tercih bağlantısı ekleyin. Pazarlama e-postalarına ilişkin kurallar ülkeye göre değişir; neyin sizin için geçerli olduğunu kontrol edin.
Web push bildirimleri
Web push, sitenizin uygulama bildirimleri gibi görünen uyarılar göndermesini sağlar. MDN'nin Push API belgelerine göre çalışma şekli şöyledir:
- Siteniz bir service worker kaydeder; tarayıcının arka planda çalıştırabileceği bir betik.
- Kullanıcı kabul ettikten sonra service worker,
PushManager.subscribe()ile abone olur. Tarayıcı, bir uç nokta ve şifreleme anahtarları içeren bir abonelik döndürür. - Sunucunuz bu aboneliği saklar ve bir şey olduğunda uç noktaya bir mesaj gönderir; genellikle VAPID anahtarlarıyla imzalanır (sunucunuzu tanımlayan bir anahtar çifti).
- Tarayıcı, sayfanız açık olmasa bile bildirimi gösteren service worker'ınızı başlatır.
MDN ayrıca uç noktanın gizli tutulması gerektiğini belirtir; çünkü bu uç noktayı bilmek, o kullanıcıya mesaj göndermek için yeterlidir.
iPhone ve iPad
WebKit, iOS ve iPadOS 16.4 ile web uygulamaları için Web Push ekledi; duyurusundaki iki koşulla birlikte: sitenin Ana Ekran'a eklenmiş olması ve iznin, bir Abone ol düğmesine dokunmak gibi bir kullanıcı eylemine yanıt olarak istenmesi. Yani iPhone'da push, yalnızca web uygulamanızı yüklemiş kullanıcılara ulaşır. Bir web uygulamasını yüklemenin ne anlama geldiği için yerel ve ilerleyici web uygulamaları rehberine bakın.
İzni doğru isteme
İlk ziyarette sormayın. Önce faydayı açıklayın ("Dersinizden bir saat önce hatırlatma alın"), ardından kullanıcı bir düğmeye dokunduğunda tarayıcı isteğini gösterin. Biri reddederse tarayıcı sizin tekrar sormanıza izin vermeyebilir; bu yüzden erken bir istem onları kalıcı olarak kaybettirebilir.
Zamanlanmış bildirimlerin bir tetikleyiciye ihtiyacı vardır
"24 saat önce hatırlatma" veya "her Pazartesi haftalık özet" gibi şeylerin bir zamanlamayla çalışması gerekir. Bu, arka plan işlerini nasıl çalıştırırsınız rehberinde ele alınan bir arka plan işi problemidir. Yaygın bir yöntem: harici bir zamanlayıcı, korumalı bir uç noktayı her birkaç dakikada bir çağırır ve bu uç nokta vadesi gelen her şeyi gönderir.
Yapay zekâ oluşturucunuza verilecek istemler
Uygulama içiyle başlayın:
Uygulama içi bildirimler ekle. Bir notifications tablosu oluştur (user, type, title, body, link, created_at, read_at). Her özelliğin çağırdığı notify(userId, type, data) sunucu fonksiyonunu ekle. Başlıkta okunmamış sayısı olan bir zil simgesi, son 20 bildirimin açılır listesi ve "Tümünü okundu olarak işaretle" düğmesi göster. Her 60 saniyede bir yeni bildirimleri sorgula.
Sonra tercihler ve e-posta:
Bildirim ayarları ekle: her tür için (yorum yanıtları, bahsetmeler, faturalandırma) kullanıcı uygulama içi, e-posta, ikisi veya hiçbiri seçebilsin. notify() bu tercihlere uymalı. E-postayı [PROVIDER] üzerinden, yalnızca sunucuda [ENV_NAME] sırrını kullanarak gönder. Yorum e-postalarını gruplandır, böylece bir kullanıcı 15 dakikada en fazla bir e-posta alsın.
Sonra push, ihtiyacınız varsa:
İsteğe bağlı web push ekle. Bir service worker kaydet, VAPID anahtarları üret ve özel anahtarı bir sır olarak sakla. Ayarlarda yalnızca tıklandığında izin isteyen bir "Bildirimleri etkinleştir" düğmesi ekle. Her aboneliği kullanıcı ve cihaz bazında sakla, kullanıcı katıldıysa notify() içinden push gönder ve push servisinin süresi dolmuş olarak bildirdiği abonelikleri sil.
Sık yapılan hatalar
- Bildirimlerin kod boyunca dağınık olması. Her özellik e-postasını farklı şekilde gönderir ve tercihler yok sayılır. Tek bir
notify()fonksiyonu kullanın. - Push izninin sayfa yüklenirken istenmesi. Çoğu insan reddeder ve bir daha şansınız olmayabilir.
- Tercihlerin olmaması. Gürültülü uyarıları kapatamayan kullanıcılar hepsini kapatır ya da ayrılır.
- Tarayıcıdan gönderim. E-posta ve push anahtarları sunucuda durmalıdır.
- Ölü push aboneliklerini temizlememek. Süresi dolmuş abonelikler birikir ve gönderimleri boşa harcar.
- Bildirim metninde hassas ayrıntılar. Kilit ekranlarında görünür. "Yeni bir mesajınız var" mesajın kendisinden daha güvenlidir.
- Gönderilenlerin kaydının olmaması. Bir kullanıcı "e-postayı hiç almadım" dediğinde, sağlayıcı mesaj kimlikleriyle tutulan kayıtlar nedenini bulmanıza yardımcı olur.
Kontrol listesi
- Her yerde kullanılan tek bir sunucu tarafı
notify()fonksiyonu - Okunma durumu olan bir bildirim tablosu ve okunmamış sayısı olan bir zil
-
notify()tarafından uygulanan tür başına kanal tercihleri - Doğrulanmış alan adıyla sunucudan gönderilen e-posta; sık olaylar için özet veya gruplama
- Push izni yalnızca bir kullanıcı eyleminden sonra, açıklamayla birlikte isteniyor
- Push masaüstünde ve Ana Ekran'a eklenmiş bir iPhone'da test edildi
- Süresi dolmuş push abonelikleri kaldırıldı
- Push veya e-posta önizlemelerinde hassas içerik yok
- Zamanlanmış hatırlatmaların güvenilir bir tetikleyicisi var
Mythex'te bildirimler
Mythex, oluşturduğunuz uygulamalar için yerleşik bir e-posta veya push servisi içermez; bu yüzden kendi e-posta sağlayıcınızı getirirsiniz ve push anahtarlarınızı üretip proje sırları olarak saklarsınız. Uygulama içi kısım yalnızca isteğinizde Mythex'in eklediği proje veritabanını gerektirir. Yukarıdaki gibi istemlerle oluşturun, zili ve e-postaları Önizleme'de test edin ve push'u yayınlanmış URL'nizde test edin; çünkü service worker'lar ve push gerçek bir HTTPS adresi gerektirir. Dokümanlardaki uygulamanızdan e-posta gönderme tarifinde bir başlangıç istemi bulunur. Mythex zamanlanmış işleri belgelemez; bu nedenle zamanlanmış hatırlatmaları arka plan işlerini nasıl çalıştırırsınız rehberinde anlatıldığı gibi harici bir tetikleyiciyle planlayın.
Sorular
Bir web uygulamasına eklemesi en kolay bildirim türü nedir?
Uygulama içi bildirimler: veritabanınızda bir bildirim tablosu ve okunmamışları gösteren bir zil simgesi. Üçüncü taraf bir servis gerektirmezler. E-posta bir sonraki adımdır ve bir e-posta sağlayıcısı gerektirir.
Web uygulaması iPhone'lara push bildirimi gönderebilir mi?
Evet, sınırlarla birlikte. WebKit, iOS ve iPadOS 16.4 ile Ana Ekran web uygulamaları için Web Push desteği ekledi; bu yüzden kullanıcının önce web uygulamanızı Ana Ekran'a eklemesi gerekir ve izin, bir Abone ol düğmesi gibi bir dokunuştan sonra istenmelidir.
Web sitesi kapalıyken push bildirimleri çalışır mı?
Evet. Push API, mesajları sitenizin service worker'ına iletir; mesaj geldiğinde tarayıcı bunu başlatır, dolayısıyla sayfanın açık olması gerekmez. Kullanıcının önce izin vermiş olması gerekir.
Bildirimlerin kullanıcıları rahatsız etmesini nasıl engellerim?
Yalnızca kullanıcının önemsediği şeyler hakkında bildirim gönderin, patlamalar halinde gelenleri tek bir mesajda gruplayın, insanların ayarlarda tür başına kanal seçmesine izin verin ve push izni isteğini ancak neden yararlı olduğunu gördükten sonra sorun.