0Pricing
Swift Academy · Pelajaran

Menangani Payload Notifikasi

Tanggapi notifikasi di latar depan dan latar belakang.

Menangani Payload Notifikasi adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Struktur Muatan

Notifikasi jarak jauh adalah kamus JSON yang dikirim server Anda ke APNs. Kunci khusus aps berisi content yang terlihat oleh pengguna — peringatan, suara, dan lencana — sedangkan kunci lain di tingkat yang sama membawa data khusus Anda, seperti id item untuk dibuka.

// Example payload JSON:
// {
//   "aps": { "alert": { "title": "Hi", "body": "..." },
//            "sound": "default", "badge": 1 },
//   "itemId": "42"
// }

Kamus aps

Di dalam aps, alert dapat berupa string atau objek berisi judul, isi, dan subjudul. sound, badge, serta tanda seperti content-available dan mutable-content juga berada di sini. Semua yang berada di luar aps dapat Anda tentukan sendiri.

// aps keys:
//   alert: { title, subtitle, body }
//   sound: "default" or critical sound object
//   badge: Int
//   content-available: 1  (silent / background)
//   mutable-content: 1    (allow modification)

Pengiriman Saat Aplikasi Aktif

Secara default, notifikasi yang tiba saat aplikasi Anda berada di latar depan tidak ditampilkan. Untuk tetap menampilkannya, terapkan willPresent milik delegasi dan kembalikan opsi presentasi yang Anda inginkan, seperti banner dan suara.

import UserNotifications
func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    willPresent notification: UNNotification
) async -> UNNotificationPresentationOptions {
    return [.banner, .sound, .badge]
}

Merespons Ketukan

Saat pengguna mengetuk notifikasi, baik ketika aplikasi berada di latar belakang maupun telah dihentikan, didReceive response milik delegasi dijalankan. Di sinilah Anda membaca muatan dan berpindah ke screen yang tepat.

import UserNotifications
func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    didReceive response: UNNotificationResponse
) async {
    let info = response.notification.request
        .content.userInfo
    if let id = info["itemId"] as? String {
        print("open item", id)
    }
}

Membaca userInfo

Muatan lengkap, termasuk kunci khusus Anda, tersedia sebagai content.userInfo — kamus [AnyHashable: Any]. Konversikan setiap nilai dengan hati-hati; jangan pernah melakukan pembukaan paksa, karena muatan yang rusak seharusnya tidak membuat aplikasi mogok.

import UserNotifications
func route(_ userInfo: [AnyHashable: Any]) {
    guard let screen = userInfo["screen"] as? String
    else { return }
    switch screen {
    case "profile": print("go to profile")
    case "cart":    print("go to cart")
    default:        break
    }
}

Notifikasi Senyap (Latar Belakang)

Menetapkan content-available: 1 dan menghilangkan peringatan akan membuat push senyap yang membangunkan aplikasi di latar belakang untuk mengambil data, tanpa antarmuka pengguna. Notifikasi ini dibatasi frekuensinya oleh sistem dan memerlukan mode latar belakang Notifikasi Jarak Jauh.

// Silent payload — no alert, just a wake-up:
// { "aps": { "content-available": 1 }, "sync": true }
let silent = "content-available wakes app quietly"
_ = silent

Penangan Pengambilan Data di Latar Belakang

Push senyap tiba di metode asinkron delegasi aplikasi didReceiveRemoteNotification. Anda melakukan pengambilan data lalu mengembalikan UIBackgroundFetchResult agar sistem mengetahui apakah data baru tiba dan dapat mengatur anggaran pembangkitan berikutnya.

import UIKit
func application(
    _ app: UIApplication,
    didReceiveRemoteNotification userInfo: [AnyHashable: Any]
) async -> UIBackgroundFetchResult {
    // fetch fresh data here
    return .newData
}

Konten yang Dapat Diubah dan Ekstensi Layanan

Dengan mutable-content: 1, Ekstensi Layanan Notifikasi dapat mencegat push sebelum ditampilkan — untuk mendekripsi isi, mengunduh lampiran gambar, atau menulis ulang judul. Ekstensi tersebut memiliki waktu singkat untuk menyelesaikannya.

// Service extension entry point (UNNotificationServiceExtension):
// override didReceive(_:withContentHandler:)
//   modify bestAttemptContent, then call contentHandler
let mutable = "mutable-content enables interception"
_ = mutable

Melokalkan Peringatan

Untuk melokalkan teks di sisi server, kirim title-loc-key dan loc-key yang merujuk pada kunci dalam string yang dapat dilokalkan di aplikasi Anda, serta loc-args untuk penggantian. Perangkat menampilkannya dalam bahasa pengguna tanpa Anda perlu mengirim teks yang telah diterjemahkan sebelumnya.

// Localized alert payload:
// "alert": {
//   "loc-key": "NEW_MESSAGE",
//   "loc-args": ["Ada"]
// }
let localized = "loc-key resolves on device"
_ = localized

Memperbarui Lencana

Nilai badge menetapkan angka pada ikon aplikasi. Mengirim badge: 0 akan menghapusnya. Anda juga dapat menetapkannya dalam kode melalui setBadgeCount setelah pengguna membaca content, sehingga lencana tetap selaras dengan status yang belum dibaca.

import UserNotifications
func clearBadge() async {
    try? await UNUserNotificationCenter.current()
        .setBadgeCount(0)
}

Penangan yang Tangguh

Gabungkan semua bagian: tampilkan saat aplikasi berada di latar depan, route saat diketuk, dan validasi setiap konversi tipe. Penangan tidak pernah mogok karena muatan yang tidak terduga dan selalu mengekstrak data yang dapat diperolehnya.

import UserNotifications
func handleTap(_ response: UNNotificationResponse) {
    let info = response.notification.request
        .content.userInfo
    guard let id = info["itemId"] as? String else {
        print("no item id; open home")
        return
    }
    print("navigate to item", id)
}

Pemeriksaan Singkat

Ingat kembali cara merespons ketukan notifikasi.

Ringkasan

Anda telah mempelajari cara menangani muatan:

  • Kamus aps berisi content yang terlihat oleh pengguna; kunci lain di tingkat yang sama berisi data Anda, yang dibaca melalui userInfo.
  • Ganti willPresent untuk menampilkan notifikasi saat aplikasi berada di latar depan dan didReceive response untuk menangani ketukan.
  • content-available: 1 menjalankan pengambilan data senyap di latar belakang yang mengembalikan UIBackgroundFetchResult.
  • mutable-content mengaktifkan ekstensi layanan; loc-key melokalkan teks di perangkat.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menangani Payload Notifikasi” gratis?

Ya — teks lengkap “Menangani Payload 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 “Menangani Payload Notifikasi”?

Tanggapi notifikasi di latar depan dan latar belakang. 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 2 dari 4.

Berapa lama pelajaran “Menangani Payload 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