Swift - NotificationCenter nedir, ne için kullanılır?

Merhabalar,

Bugün anlatacağımız konu, NotificationCenter.

NotificationCenter nedir?

NotificationCenter uygulama içerisindeki istediğiniz bir sınıf, method üzerindeki bir değişikliği veya Apple tarafından tanımlanmış belirli event (aksiyonları) yakalamak/tetiklemek için kullanılır. Küçük bir örnek: Klavyenin açıldığı ve kapandığı durumları yakalamak istiyorsunuz, Evet! NotificationCenter kullanacağız.

Apple’ın daha önceden tanımlanan kendi tetikleyicilerinide observer eklerken kullanabilirsiniz onlarıda buraya bırakıyorum.

> Apple’ın varsayılan tetikleyicilerine buradan ulaşabilirsiniz.

Her çalışan bir uygulamanın default (NotificationCenter.default) bildirim merkezi vardır. Yeni observer ekleyerek belirli bağlamlarda etkileşimi ve iletişimi sağlayabilirsiniz.

Yerel (Local) Bildirim ve Uzaktan (Push) Bildirimler’den farkı nedir?

Yerel bildirimler, uygulama içerisindeki bir olayı scheduled (zamanlanmış) vb. gibi şekilde yakalamanıza olanak verir. Mesela bir mobil oyun düşünün ki; sürekli olarak oyun içerisindeki altınlarınızın azaldığına dair size uyarı veriyor ve satın alabileceğinizi söylüyor.

Remote(Push) bildirimler, web server (back-end) tarafından Apple Push Notifications sunucularına istek gönderirler. Bunun sonucunda gönderdikleri bildirimler kullanıcının cihazında gözükür.

Bunun dışında Remote (Push) Bildirimlerinde kullanıcıya gözükme zorunluluğu yoktur. Bir Remote bildirim ile de uygulama içerisindeki bir görevi tetikleyebilirsiniz.

Ancak NotificationCenter, uygulama içerisinde tetiklemek istediğiniz aksiyon sayesinde bir sınıftan bir diğer sınıfa bilgi/veri aktarmanıza ve almanıza olanak sağlar.

Çok dağıtmadan konumuz olan, NotificationCenter’in kullanımına dönelim diyorum. 📱

Bu olayı çok daha iyi anlamanız için küçük bir örnek yaptım.

Bir uygulama düşünün, ilk controller’da size adınızı soruyor ve bunu uygulamanın belirli yerlerinde kullanmak istiyorsunuz.

Uygulamanın Simulator üzerindeki çıktısını sizinle paylaşmak istiyorum daha iyi pekiştirmenize olanak sağlayacaktır.

GIF’in yüklenmesi çok kısa zaman alacaktır, beklerseniz içeriği görebilirsiniz.


İlk olarak main ve second controller’un kodlarını bırakıyorum. Yorum satırı ile satır satır anlattım.

ViewController.swift:

SecondViewController.swift:

Sağlıcakla kalın. 😎