Swift Academy · Lektion

Notisåtgärder och kategorier

Lägg till interaktiva åtgärder i notiser.

Lektion 4 av 413 steg

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 buttons

Definiera 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, inklusive UNTextInputNotificationAction, och gruppera dem i en UNNotificationCategory.
  • Registrera kategorier vid appstart. Ange categoryIdentifier i innehållet, eller category i pushnotisen, för att visa knapparna.
  • Hantera response.actionIdentifier, inklusive standard- och avvisningsidentifierarna, och läs userText för svar.
  • Utelämna .foreground för bakgrundsåtgärder som att skjuta upp en påminnelse.
Gratis att börja

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

  1. Registrera pushnotiser
  2. Hantera notispayloads
  3. Bakgrundsuppgifter och uppdatering
  4. Notisåtgärder och kategorier
← Tillbaka till Swift Academy