Tindakan dan Kategori Notifikasi
Tambahkan tindakan interaktif ke notifikasi.
Tindakan dan Kategori Notifikasi adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Notifikasi Interaktif
Notifikasi dapat melakukan lebih dari sekadar menampilkan teks — notifikasi dapat menyediakan tombol. Pengguna dapat reply pada pesan, accept undangan, atau snooze pengingat tanpa membuka aplikasi. Fitur ini dibangun dari tindakan yang dikelompokkan ke dalam kategori.
import UserNotifications
// Category = a set of actions
// Each delivered notification names its category
// so the system shows the right buttonsMenentukan action
Sebuah UNNotificationAction memiliki pengenal yang akan Anda cocokkan nanti, judul localized yang ditampilkan pada tombol, serta opsi seperti .destructive atau .foreground (yang menjalankan aplikasi).
import UserNotifications
let accept = UNNotificationAction(
identifier: "ACCEPT",
title: String(localized: "Accept"),
options: [.foreground])
let decline = UNNotificationAction(
identifier: "DECLINE",
title: String(localized: "Decline"),
options: [.destructive])Mengelompokkan ke dalam Kategori
Sebuah UNNotificationCategory menggabungkan tindakan di bawah pengenal category. Urutan tindakan dalam array adalah urutan tombolnya. Anda mendaftarkan kategori satu kali saat aplikasi diluncurkan melalui pusat notifikasi.
import UserNotifications
let inviteCategory = UNNotificationCategory(
identifier: "INVITE",
actions: [accept, decline],
intentIdentifiers: [],
options: [])
UNUserNotificationCenter.current()
.setNotificationCategories([inviteCategory])Memberi Tag Category pada Notifikasi
Agar tombol muncul, content notifikasi harus menetapkan categoryIdentifier ke category yang telah terdaftar. Untuk push jarak jauh, server mengirim "category": "INVITE" di dalam kamus aps.
import UserNotifications
let content = UNMutableNotificationContent()
content.title = String(localized: "New invite")
content.body = String(localized: "Ada invited you")
content.categoryIdentifier = "INVITE"Menangani Tindakan yang Dipilih
Saat pengguna mengetuk tombol, didReceive response milik delegasi dijalankan dengan response.actionIdentifier yang ditetapkan ke id action Anda. Gunakan percabangan untuk menjalankan pekerjaan yang tepat.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse
) async {
switch response.actionIdentifier {
case "ACCEPT": print("accepted")
case "DECLINE": print("declined")
default: break
}
}Pengenal Default dan Penghapusan
Dua pengenal sistem selalu tersedia: UNNotificationDefaultActionIdentifier berarti pengguna mengetuk isi notifikasi untuk open aplikasi, sedangkan UNNotificationDismissActionIdentifier berarti pengguna menghapusnya. Tangani keduanya bersama tindakan khusus Anda.
import UserNotifications
func route(_ id: String) {
switch id {
case UNNotificationDefaultActionIdentifier:
print("opened the app")
case UNNotificationDismissActionIdentifier:
print("dismissed")
default:
print("custom action", id)
}
}Tindakan Masukan Teks
UNTextInputNotificationAction menampilkan bidang teks sebaris — sempurna untuk balasan cepat. Tindakan ini menambahkan judul tombol dan placeholder untuk kotak input.
import UserNotifications
let reply = UNTextInputNotificationAction(
identifier: "REPLY",
title: String(localized: "Reply"),
options: [],
textInputButtonTitle: String(localized: "Send"),
textInputPlaceholder: String(localized: "Message"))Membaca Teks yang Diketik
Untuk action teks, responsnya berupa UNTextInputNotificationResponse. Konversikan ke tipe tersebut untuk membaca userText, yaitu string yang diketik pengguna.
import UserNotifications
func handle(_ response: UNNotificationResponse) {
if let textResponse = response
as? UNTextInputNotificationResponse {
let message = textResponse.userText
print("reply:", message)
}
}Opsi Kategori
Opsi kategori menyempurnakan perilaku: .customDismissAction mengirimkan peristiwa penghapusan kepada delegasi Anda, .hiddenPreviewsShowTitle menampilkan judul meskipun pratinjau disembunyikan di layar kunci, dan .allowInCarPlay mengizinkan tampilan di CarPlay.
import UserNotifications
let category = UNNotificationCategory(
identifier: "MESSAGE",
actions: [reply],
intentIdentifiers: [],
options: [.customDismissAction,
.hiddenPreviewsShowTitle])
_ = categoryTindakan di Latar Belakang dan Latar Depan
Tanpa opsi .foreground, sebuah action menjalankan penangan Anda di latar belakang tanpa menampilkan aplikasi — ideal untuk snooze atau menyukai sesuatu. Dengan .foreground, aplikasi dijalankan agar Anda dapat menampilkan antarmuka. Pilih berdasarkan apakah pengguna perlu melihat sesuatu.
import UserNotifications
let snooze = UNNotificationAction(
identifier: "SNOOZE",
title: String(localized: "Snooze"),
options: []) // background, no app launch
let open = UNNotificationAction(
identifier: "OPEN",
title: String(localized: "Open"),
options: [.foreground]) // launches app
_ = (snooze, open)Alur Balasan Lengkap
Gabungkan action teks, kategori, dan penangan yang membedakan balasan yang diketik dari pembukaan biasa. Pola ini mendukung balasan pesan sebaris.
import UserNotifications
func handle(_ response: UNNotificationResponse) async {
switch response.actionIdentifier {
case "REPLY":
let text = (response as?
UNTextInputNotificationResponse)?.userText ?? ""
print("send reply:", text)
case UNNotificationDefaultActionIdentifier:
print("open conversation")
default:
break
}
}Pemeriksaan Singkat
Ingat kembali cara sistem mengetahui tombol mana yang harus ditampilkan.
Ringkasan
Anda telah mempelajari notifikasi interaktif:
- Buat
UNNotificationActions, termasukUNTextInputNotificationAction, lalu kelompokkan ke dalamUNNotificationCategory. - Daftarkan kategori saat aplikasi diluncurkan; tetapkan
categoryIdentifierpada content (ataucategorydalam push) untuk menampilkan tombol. - Tangani
response.actionIdentifier, termasuk pengenal default dan penghapusan, lalu bacauserTextuntuk balasan. - Hilangkan
.foregrounduntuk tindakan di latar belakang seperti snooze.
Belajar Swift dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Tindakan dan Kategori Notifikasi” gratis?
Ya — teks lengkap “Tindakan dan Kategori 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 “Tindakan dan Kategori Notifikasi”?
Tambahkan tindakan interaktif ke notifikasi. 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 4 dari 4.
Berapa lama pelajaran “Tindakan dan Kategori 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
- Mendaftarkan Notifikasi Push
- Menangani Payload Notifikasi
- Tugas Latar Belakang dan Penyegaran
- Tindakan dan Kategori Notifikasi