Notisåtgärder och kategorier
Lägg till interaktiva åtgärder i notiser.
Notisåtgärder och kategorier är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.
Interaktiva notiser
Notiser kan göra mer än att visa text – de kan erbjuda knappar. Användaren kan svara på ett meddelande, acceptera en inbjudan eller skjuta upp en påminnelse utan att öppna appen. Detta bygger på åtgärder som grupperas i kategorier.
import UserNotifications
// Category = a set of actions
// Each delivered notification names its category
// so the system shows the right buttonsDefiniera en åtgärd
En UNNotificationAction har en identifierare, som ni matchar mot senare, en lokaliserad titel som visas på knappen och alternativ som .destructive eller .foreground, vilket startar 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])Gruppera i en kategori
En UNNotificationCategory samlar åtgärder under en kategoriidentifierare. Åtgärdernas ordning i arrayen är samma som knapparnas ordning. Registrera kategorierna en gång vid appstart hos notiscentret.
import UserNotifications
let inviteCategory = UNNotificationCategory(
identifier: "INVITE",
actions: [accept, decline],
intentIdentifiers: [],
options: [])
UNUserNotificationCenter.current()
.setNotificationCategories([inviteCategory])Märk en notis med dess kategori
För att knapparna ska visas måste notisens innehåll ange categoryIdentifier för en registrerad kategori. För fjärrpushnotiser skickar servern "category": "INVITE" inuti ordboken aps.
import UserNotifications
let content = UNMutableNotificationContent()
content.title = String(localized: "New invite")
content.body = String(localized: "Ada invited you")
content.categoryIdentifier = "INVITE"Hantera den valda åtgärden
När användaren trycker på en knapp aktiveras delegatens didReceive response, där response.actionIdentifier innehåller åtgärdens ID. Använd en switch-sats för att utföra rätt arbete.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse
) async {
switch response.actionIdentifier {
case "ACCEPT": print("accepted")
case "DECLINE": print("declined")
default: break
}
}Standard- och avvisningsidentifierare
Det finns alltid två systemidentifierare: UNNotificationDefaultActionIdentifier betyder att användaren tryckte på brödtexten för att öppna appen, och UNNotificationDismissActionIdentifier betyder att användaren avvisade notisen. Hantera dessa tillsammans med era egna åtgärder.
import UserNotifications
func route(_ id: String) {
switch id {
case UNNotificationDefaultActionIdentifier:
print("opened the app")
case UNNotificationDismissActionIdentifier:
print("dismissed")
default:
print("custom action", id)
}
}Åtgärder med textinmatning
En UNTextInputNotificationAction visar ett textfält direkt i notisen – perfekt för snabba svar. Den lägger till en knapptext och en platshållare för inmatningsfältet.
import UserNotifications
let reply = UNTextInputNotificationAction(
identifier: "REPLY",
title: String(localized: "Reply"),
options: [],
textInputButtonTitle: String(localized: "Send"),
textInputPlaceholder: String(localized: "Message"))Läsa den inmatade texten
För en textåtgärd är svaret en UNTextInputNotificationResponse. Typomvandla till den typen för att läsa userText, alltså strängen som användaren skrev.
import UserNotifications
func handle(_ response: UNNotificationResponse) {
if let textResponse = response
as? UNTextInputNotificationResponse {
let message = textResponse.userText
print("reply:", message)
}
}Kategorialternativ
Kategorialternativ finjusterar beteendet: .customDismissAction skickar händelsen när notisen avvisas till er delegat, .hiddenPreviewsShowTitle visar titeln även när förhandsvisningar är dolda på låsskärmen och .allowInCarPlay tillåter visning i CarPlay.
import UserNotifications
let category = UNNotificationCategory(
identifier: "MESSAGE",
actions: [reply],
intentIdentifiers: [],
options: [.customDismissAction,
.hiddenPreviewsShowTitle])
_ = categoryÅtgärder i bakgrunden och förgrunden
Utan alternativet .foreground körs åtgärden i er hanterare i bakgrunden utan att appen visas – perfekt för att skjuta upp eller gilla något. Med .foreground startas appen så att ni kan visa ett användargränssnitt. Välj utifrån om användaren behöver se något.
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)Ett komplett svarsförlopp
Kombinera en textåtgärd, en kategori och en hanterare som skiljer ett inskrivet svar från en vanlig öppning. Detta mönster används för svar direkt i meddelanden.
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
}
}Snabbkontroll
Kom ihåg hur systemet vet vilka knappar som ska visas.
Sammanfattning
Ni har lärt er interaktiva notiser:
- Skapa
UNNotificationAction-objekt, inklusiveUNTextInputNotificationAction, och gruppera dem i enUNNotificationCategory. - Registrera kategorier vid appstart. Ange
categoryIdentifieri innehållet, ellercategoryi pushnotisen, för att visa knapparna. - Hantera
response.actionIdentifier, inklusive standard- och avvisningsidentifierarna, och läsuserTextför svar. - Utelämna
.foregroundför bakgrundsåtgärder som att skjuta upp en påminnelse.
Lär dig Swift med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 122
- Lektioner
- 409
Vanliga frågor
Är lektionen ”Notisåtgärder och kategorier” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Notisåtgärder och kategorier”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Notisåtgärder och kategorier”?
Lägg till interaktiva åtgärder i notiser. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Swift Academy?
Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Notisåtgärder och kategorier”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Swift Academy-lektionen?
Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Registrera pushnotiser
- Hantera notispayloads
- Bakgrundsuppgifter och uppdatering
- Notisåtgärder och kategorier