Swift Academy · leksjon

Varslingshandlinger og kategorier

Legg til interaktive handlinger i varsler.

Leksjon 4 av 413 trinn

Varslingshandlinger og kategorier er en gratis leksjon i Swift Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Swift Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Swift Academy inneholder totalt 4 leksjoner.

Interaktive varsler

Varsler kan gjøre mer enn å vise tekst — de kan tilby knapper. En bruker kan svare på en melding, godta en invitasjon eller utsette en påminnelse uten å åpne appen. Dette bygges av handlinger gruppert i kategorier.

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

Definere en handling

En UNNotificationAction har en identifikator som De sammenligner med senere, en lokalisert tittel som vises på knappen, og alternativer som .destructive eller .foreground (som starter appen).

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

Gruppere i en kategori

En UNNotificationCategory samler handlinger under en kategoriidentifikator. Rekkefølgen på handlingene i matrisen er knappenes rekkefølge. Registrer kategorier én gang ved oppstart med varslingssenteret.

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

Merke et varsel med kategorien

For at knappene skal vises, må varselets innhold angi categoryIdentifier til en registrert kategori. For eksterne push-varsler sender serveren "category": "INVITE" inne i aps-ordboken.

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

Håndtere den valgte handlingen

Når brukeren trykker på en knapp, utløses delegatets didReceive response med response.actionIdentifier satt til handlingens ID. Bruk switch på den for å utføre riktig arbeid.

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

Standard- og avvisningsidentifikatorer

To systemidentifikatorer finnes alltid: UNNotificationDefaultActionIdentifier betyr at brukeren trykket på brødteksten for å åpne appen, og UNNotificationDismissActionIdentifier betyr at brukeren lukket varselet. Håndter disse sammen med de egendefinerte handlingene.

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

Tekstinndatabehandlinger

En UNTextInputNotificationAction viser et tekstfelt direkte i varselet — perfekt for raske svar. Den legger til en knappetittel og en plassholder for inndatafeltet.

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

Lese innskrevet tekst

For en teksthandling er svaret en UNTextInputNotificationResponse. Cast svaret til denne typen for å lese userText, strengen brukeren skrev inn.

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

Kategorialternativer

Kategorialternativer finjusterer oppførselen: .customDismissAction leverer hendelsen for lukking til delegaten, .hiddenPreviewsShowTitle viser tittelen selv når forhåndsvisninger er skjult på låseskjermen, og .allowInCarPlay tillater visning i CarPlay.

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

Handlinger i bakgrunnen kontra forgrunnen

Uten alternativet .foreground kjører en handling behandleren i bakgrunnen uten å bringe appen frem — ideelt for å utsette eller like noe. Med .foreground starter appen, slik at De kan vise et brukergrensesnitt. Velg basert på om brukeren trenger å se noe.

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)

En komplett svarflyt

Kombiner en teksthandling, en kategori og en behandler som skiller et innskrevet svar fra en vanlig åpning. Dette mønsteret brukes til meldingssvar direkte i varselet.

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

Kort kontroll

Husk hvordan systemet vet hvilke knapper som skal vises.

Oppsummering

De har lært om interaktive varsler:

  • Bygg UNNotificationAction-handlinger, inkludert UNTextInputNotificationAction, og grupper dem i en UNNotificationCategory.
  • Registrer kategorier ved oppstart; angi categoryIdentifier på innholdet, eller category i push-varslet, for å vise knappene.
  • Håndter response.actionIdentifier, inkludert standard- og avvisningsidentifikatorene, og les userText for svar.
  • Utelat .foreground for handlinger i bakgrunnen, som å utsette noe.
Gratis å komme i gang

Lær deg Swift med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
122
Leksjoner
409

Ofte stilte spørsmål

Er leksjonen «Varslingshandlinger og kategorier» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Swift Academy, inkludert «Varslingshandlinger og kategorier», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Swift Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Varslingshandlinger og kategorier»?

Legg til interaktive handlinger i varsler. Du øver på Swift Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Swift Academy?

Ingen tidligere erfaring er nødvendig. Swift Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Varslingshandlinger og kategorier»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Swift Academy-leksjonen?

Ja. Alle Swift Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Registrere for push-varsler
  2. Håndtere varslingsnyttelaster
  3. Bakgrunnsoppgaver og oppdatering
  4. Varslingshandlinger og kategorier
← Tilbake til Swift Academy