Mengirim dan Mengamati Notifikasi
Kirim dan terima peristiwa di seluruh aplikasi.
Mengirim dan Mengamati Notifikasi adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
NotificationCenter
NotificationCenter adalah mekanisme siaran: satu bagian app mengirimkan notifikasi dan sejumlah pengamat dapat merespons tanpa pengirim dan penerima saling mengetahui.
Pusat Bawaan
Sebagian besar kode menggunakan NotificationCenter.default, yaitu pusat bersama yang menyalurkan notifikasi di seluruh proses.
import Foundation
let center = NotificationCenter.default
print("Using the default notification center")Mendefinisikan Nama Notifikasi
Notifikasi diidentifikasi oleh Notification.Name. Mendefinisikan konstanta mencegah kesalahan pengetikan dan memusatkan nama tersebut.
import Foundation
extension Notification.Name {
static let dataUpdated = Notification.Name("dataUpdated")
}
print("Defined a notification name")Mengirim Notifikasi
post(name:object:) menyebarkan notifikasi. object biasanya adalah pengirimnya atau nil.
import Foundation
let center = NotificationCenter.default
let name = Notification.Name("ping")
center.post(name: name, object: nil)
print("Posted a notification")Menambahkan Pengamat (Fungsi Penutupan)
addObserver(forName:object:queue:using:) berbasis blok menjalankan fungsi penutupan setiap kali notifikasi dipicu dan mengembalikan token.
import Foundation
let center = NotificationCenter.default
let name = Notification.Name("ping")
let token = center.addObserver(forName: name, object: nil, queue: .main) { _ in
print("Observer fired")
}
center.post(name: name, object: nil)
_ = tokenPengamat Berbasis Pemilih
Antarmuka klasik menggunakan sasaran dan #selector. Metode tersebut menerima argumen Notification.
import Foundation
class Watcher: NSObject {
func start() {
NotificationCenter.default.addObserver(
self, selector: #selector(handle(_:)),
name: Notification.Name("ping"), object: nil)
}
@objc func handle(_ n: Notification) { print("Handled") }
}
Watcher().start()Menerima Notifikasi
Fungsi penutupan atau metode pengamat menerima nilai Notification yang membawa nama, objek, dan userInfo.
import Foundation
let center = NotificationCenter.default
let name = Notification.Name("event")
_ = center.addObserver(forName: name, object: nil, queue: nil) { note in
print("Got: \(note.name.rawValue)")
}
center.post(name: name, object: nil)Penyebaran Satu-ke-Banyak
Banyak pengamat dapat mendengarkan nama yang sama. Satu pemanggilan post akan memberi tahu semuanya.
import Foundation
let center = NotificationCenter.default
let name = Notification.Name("refresh")
_ = center.addObserver(forName: name, object: nil, queue: nil) { _ in print("A") }
_ = center.addObserver(forName: name, object: nil, queue: nil) { _ in print("B") }
center.post(name: name, object: nil)Memfilter Berdasarkan Objek
Meneruskan object yang bukan nil ke addObserver akan memfilter notifikasi, sehingga pengamat hanya dipicu oleh pengiriman dari pengirim tersebut.
import Foundation
let center = NotificationCenter.default
let sender = NSObject()
let name = Notification.Name("scoped")
_ = center.addObserver(forName: name, object: sender, queue: nil) { _ in
print("Only from sender")
}
center.post(name: name, object: sender)Notifikasi Sistem
Sistem mengirim banyak notifikasi bawaan, seperti peristiwa papan ketik atau siklus hidup aplikasi, yang Anda amati dengan cara yang sama.
import Foundation
// e.g. UIApplication.didEnterBackgroundNotification on iOS
let custom = Notification.Name("appReady")
_ = NotificationCenter.default.addObserver(forName: custom, object: nil, queue: nil) { _ in
print("App ready")
}Kapan Menggunakannya
NotificationCenter cocok untuk peristiwa global satu-ke-banyak ketika pengirim dan penerima perlu tetap tidak saling bergantung. Untuk hubungan satu-ke-satu yang erat, delegate sering kali lebih jelas.
import Foundation
// Broadcast a global event many parts of the app care about.
let name = Notification.Name("userLoggedOut")
NotificationCenter.default.post(name: name, object: nil)
print("Broadcast logout")Pemeriksaan Singkat
Apa yang dilakukan NotificationCenter.default.post(name:object:)?
Ringkasan
NotificationCenter.default memisahkan pengirim dan penerima: Anda menentukan Notification.Name, mengirimkannya dengan post, lalu menggunakan addObserver dengan fungsi penutupan atau pemilih untuk merespons. Fitur ini mendukung penyebaran satu-ke-banyak dan pemfilteran berdasarkan objek. Berikutnya: membawa data dalam userInfo.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengirim dan Mengamati Notifikasi” gratis?
Ya — teks lengkap “Mengirim dan Mengamati Notifikasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengirim dan Mengamati Notifikasi”?
Kirim dan terima peristiwa di seluruh aplikasi. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mengirim dan Mengamati Notifikasi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengirim dan Mengamati Notifikasi
- Payload Notifikasi userInfo
- Menghapus Pengamat dengan Aman
- Alternatif Pola Observer