0Pricing
Swift Academy · Lekcja

Akcje i kategorie powiadomień

Dodawanie interaktywnych akcji do powiadomień.

Akcje i kategorie powiadomień to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Interaktywne powiadomienia

Powiadomienia mogą robić więcej niż tylko wyświetlać tekst — mogą oferować przyciski. Użytkownik może odpowiedzieć na wiadomość, zaakceptować zaproszenie lub odłożyć przypomnienie bez otwierania aplikacji. Mechanizm ten opiera się na akcjach pogrupowanych w kategorie.

import UserNotifications
// Category = a set of actions
// Each delivered notification names its category
// so the system shows the right buttons

Definiowanie akcji

Obiekt UNNotificationAction ma identyfikator, na podstawie którego można później dopasować akcję, zlokalizowany tytuł wyświetlany na przycisku oraz opcje, takie jak .destructive lub .foreground (uruchamiająca aplikację).

import UserNotifications
let accept = UNNotificationAction(
    identifier: "ACCEPT",
    title: String(localized: "Accept"),
    options: [.foreground])
let decline = UNNotificationAction(
    identifier: "DECLINE",
    title: String(localized: "Decline"),
    options: [.destructive])

Grupowanie w kategorię

Obiekt UNNotificationCategory grupuje akcje pod jednym identyfikatorem kategorii. Kolejność akcji w tablicy jest kolejnością przycisków. Kategorie należy zarejestrować raz podczas uruchamiania za pomocą centrum powiadomień.

import UserNotifications
let inviteCategory = UNNotificationCategory(
    identifier: "INVITE",
    actions: [accept, decline],
    intentIdentifiers: [],
    options: [])
UNUserNotificationCenter.current()
    .setNotificationCategories([inviteCategory])

Przypisywanie powiadomieniu kategorii

Aby przyciski się pojawiły, treść powiadomienia musi ustawiać categoryIdentifier na zarejestrowaną kategorię. W przypadku zdalnych powiadomień serwer wysyła "category": "INVITE" wewnątrz słownika aps.

import UserNotifications
let content = UNMutableNotificationContent()
content.title = String(localized: "New invite")
content.body = String(localized: "Ada invited you")
content.categoryIdentifier = "INVITE"

Obsługa wybranej akcji

Gdy użytkownik dotknie przycisku, wywoływana jest metoda delegata didReceive response, a właściwość response.actionIdentifier zawiera identyfikator akcji. Należy użyć instrukcji switch, aby wykonać odpowiednią operację.

import UserNotifications
func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    didReceive response: UNNotificationResponse
) async {
    switch response.actionIdentifier {
    case "ACCEPT":  print("accepted")
    case "DECLINE": print("declined")
    default:        break
    }
}

Identyfikatory domyślnej akcji i odrzucenia

Zawsze istnieją dwa identyfikatory systemowe: UNNotificationDefaultActionIdentifier oznacza, że użytkownik dotknął treści, aby otworzyć aplikację, a UNNotificationDismissActionIdentifier oznacza, że odrzucił powiadomienie. Należy obsługiwać je razem z własnymi akcjami.

import UserNotifications
func route(_ id: String) {
    switch id {
    case UNNotificationDefaultActionIdentifier:
        print("opened the app")
    case UNNotificationDismissActionIdentifier:
        print("dismissed")
    default:
        print("custom action", id)
    }
}

Akcje z wprowadzaniem tekstu

Obiekt UNTextInputNotificationAction wyświetla pole tekstowe bezpośrednio w powiadomieniu — idealne do szybkich odpowiedzi. Dodaje tytuł przycisku oraz tekst zastępczy pola wprowadzania.

import UserNotifications
let reply = UNTextInputNotificationAction(
    identifier: "REPLY",
    title: String(localized: "Reply"),
    options: [],
    textInputButtonTitle: String(localized: "Send"),
    textInputPlaceholder: String(localized: "Message"))

Odczytywanie wpisanego tekstu

W przypadku akcji tekstowej odpowiedzią jest obiekt UNTextInputNotificationResponse. Należy rzutować odpowiedź na ten typ, aby odczytać userText, czyli ciąg znaków wpisany przez użytkownika.

import UserNotifications
func handle(_ response: UNNotificationResponse) {
    if let textResponse = response
        as? UNTextInputNotificationResponse {
        let message = textResponse.userText
        print("reply:", message)
    }
}

Opcje kategorii

Opcje kategorii doprecyzowują zachowanie: .customDismissAction przekazuje zdarzenie odrzucenia do delegata, .hiddenPreviewsShowTitle ujawnia tytuł, nawet gdy podglądy są ukryte na ekranie blokady, a .allowInCarPlay zezwala na wyświetlanie w CarPlay.

import UserNotifications
let category = UNNotificationCategory(
    identifier: "MESSAGE",
    actions: [reply],
    intentIdentifiers: [],
    options: [.customDismissAction,
              .hiddenPreviewsShowTitle])
_ = category

Akcje w tle a akcje na pierwszym planie

Bez opcji .foreground akcja uruchamia procedurę obsługi w tle, bez przenoszenia aplikacji na pierwszy plan — jest to idealne rozwiązanie na przykład dla funkcji odłożenia lub polubienia. Z opcją .foreground aplikacja zostaje uruchomiona, aby można było wyświetlić interfejs. Należy wybrać opcję zależnie od tego, czy użytkownik musi coś zobaczyć.

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)

Pełny cykl odpowiadania

Należy połączyć akcję tekstową, kategorię oraz procedurę obsługi, która rozróżnia wpisaną odpowiedź od zwykłego otwarcia. Ten schemat umożliwia odpowiadanie na wiadomości bezpośrednio w powiadomieniu.

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
    }
}

Szybkie sprawdzenie

Proszę przypomnieć sobie, skąd system wie, które przyciski wyświetlić.

Podsumowanie

Nauczyli się Państwo obsługi interaktywnych powiadomień:

  • Należy tworzyć obiekty UNNotificationAction, w tym UNTextInputNotificationAction, i grupować je w obiekcie UNNotificationCategory.
  • Należy rejestrować kategorie podczas uruchamiania, a następnie ustawiać categoryIdentifier w treści powiadomienia lub category w powiadomieniu push, aby wyświetlić przyciski.
  • Należy obsługiwać response.actionIdentifier, w tym identyfikatory domyślnej akcji i odrzucenia, oraz odczytywać userText w przypadku odpowiedzi.
  • Należy pomijać .foreground w przypadku akcji wykonywanych w tle, takich jak odłożenie przypomnienia.

Często zadawane pytania

Czy lekcja „Akcje i kategorie powiadomień” jest bezpłatna?

Tak — pełny tekst „Akcje i kategorie powiadomień” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Akcje i kategorie powiadomień”?

Dodawanie interaktywnych akcji do powiadomień. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Akcje i kategorie powiadomień”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Rejestrowanie powiadomień push
  2. Obsługa ładunków powiadomień
  3. Zadania w tle i odświeżanie
  4. Akcje i kategorie powiadomień
← Powrót do Swift Academy