Varslingshandlinger og kategorier
Legg til interaktive handlinger i varsler.
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 buttonsDefinere 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])
_ = categoryHandlinger 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, inkludertUNTextInputNotificationAction, og grupper dem i enUNNotificationCategory. - Registrer kategorier ved oppstart; angi
categoryIdentifierpå innholdet, ellercategoryi push-varslet, for å vise knappene. - Håndter
response.actionIdentifier, inkludert standard- og avvisningsidentifikatorene, og lesuserTextfor svar. - Utelat
.foregroundfor handlinger i bakgrunnen, som å utsette noe.
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
- Registrere for push-varsler
- Håndtere varslingsnyttelaster
- Bakgrunnsoppgaver og oppdatering
- Varslingshandlinger og kategorier