Swift Academy · Pelajaran

Tindakan dan Kategori Notifikasi

Tambahkan tindakan interaktif ke notifikasi.

Pelajaran 4 dari 413 langkah

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 buttons

Menentukan 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])
_ = category

Tindakan 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, termasuk UNTextInputNotificationAction, lalu kelompokkan ke dalam UNNotificationCategory.
  • Daftarkan kategori saat aplikasi diluncurkan; tetapkan categoryIdentifier pada content (atau category dalam push) untuk menampilkan tombol.
  • Tangani response.actionIdentifier, termasuk pengenal default dan penghapusan, lalu baca userText untuk balasan.
  • Hilangkan .foreground untuk tindakan di latar belakang seperti snooze.
Gratis untuk memulai

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

  1. Mendaftarkan Notifikasi Push
  2. Menangani Payload Notifikasi
  3. Tugas Latar Belakang dan Penyegaran
  4. Tindakan dan Kategori Notifikasi
← Kembali ke Swift Academy