Swift Academy · Oppitunti

Ilmoitusten toiminnot ja luokat

Lisää ilmoituksiin vuorovaikutteisia toimintoja.

Oppitunti 4/413 vaihetta

Ilmoitusten toiminnot ja luokat on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Interaktiiviset ilmoitukset

Ilmoitukset voivat tehdä muutakin kuin näyttää tekstiä — ne voivat tarjota painikkeita. Käyttäjä voi vastata viestiin, hyväksyä kutsun tai torkuttaa muistutuksen avaamatta sovellusta. Tämä toteutetaan ryhmittelemällä toiminnot kategorioiksi.

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

Toiminnon määrittäminen

UNNotificationAction-toiminnolla on tunniste, jonka perusteella löydätte sen myöhemmin, painikkeessa näkyvä lokalisoitu otsikko sekä asetuksia, kuten .destructive tai .foreground, joka avaa sovelluksen.

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

Ryhmittely kategoriaksi

UNNotificationCategory kokoaa toiminnot kategoriatunnisteen alle. Toimintojen järjestys taulukossa on sama kuin painikkeiden järjestys. Rekisteröikää kategoriat kerran käynnistyksen yhteydessä ilmoituskeskuksessa.

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

Ilmoituksen liittäminen kategoriaan

Jotta painikkeet näkyvät, ilmoituksen sisällössä on asetettava categoryIdentifier rekisteröidyn kategorian tunnisteeksi. Etäpush-ilmoituksissa palvelin lähettää "category": "INVITE"-parin aps-sanakirjan sisällä.

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

Valitun toiminnon käsittely

Kun käyttäjä napauttaa painiketta, delegaatin didReceive response suoritetaan ja response.actionIdentifier sisältää toiminnon tunnisteen. Valitkaa sen perusteella oikea toiminto.

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

Oletus- ja sulkemistunnisteet

Kaksi järjestelmän tunnistetta on aina käytettävissä: UNNotificationDefaultActionIdentifier tarkoittaa, että käyttäjä napautti ilmoituksen runkoa ja avasi sovelluksen, kun taas UNNotificationDismissActionIdentifier tarkoittaa, että käyttäjä sulki ilmoituksen. Käsitelkää nämä omien toimintojenne rinnalla.

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

Tekstinsyöttötoiminnot

UNTextInputNotificationAction näyttää ilmoituksen sisällä olevan tekstikentän, joka sopii erinomaisesti pikavastauksiin. Se lisää syöttökentälle painikkeen otsikon ja paikkamerkkitekstin.

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

Kirjoitetun tekstin lukeminen

Tekstitoiminnon vastaus on tyyppiä UNTextInputNotificationResponse. Muuntakaa vastaus tähän tyyppiin, jotta voitte lukea userText-ominaisuuden eli käyttäjän kirjoittaman merkkijonon.

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

Kategorian asetukset

Kategorian asetukset tarkentavat toimintaa: .customDismissAction välittää sulkemistapahtuman delegaatillenne, .hiddenPreviewsShowTitle näyttää otsikon silloinkin, kun esikatselut on piilotettu lukitusnäytössä, ja .allowInCarPlay sallii näytön CarPlayssa.

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

Tausta- ja etualatoiminnot

Ilman .foreground-asetusta toiminto suorittaa käsittelijänne taustalla tuomatta sovellusta etualalle — tämä sopii esimerkiksi torkutukseen tai tykkäykseen. .foreground-asetuksella sovellus avautuu, jotta voitte näyttää käyttöliittymän. Valitkaa asetus sen perusteella, tarvitseeko käyttäjän nähdä jotain.

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)

Täydellinen vastauspolku

Yhdistäkää tekstitoiminto, kategoria ja käsittelijä, joka erottaa kirjoitetun vastauksen tavallisesta avaamisesta. Tämä malli mahdollistaa viesteihin vastaamisen suoraan ilmoituksesta.

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

Pikatarkistus

Kerratkaa, miten järjestelmä tietää, mitkä painikkeet näytetään.

Kertaus

Opitte interaktiivisista ilmoituksista:

  • Luokaa UNNotificationAction-toimintoja, mukaan lukien UNTextInputNotificationAction, ja ryhmitelkää ne UNNotificationCategory-kategoriaksi.
  • Rekisteröikää kategoriat käynnistyksen yhteydessä ja asettakaa categoryIdentifier sisällölle tai category push-ilmoitukseen, jotta painikkeet näkyvät.
  • Käsitelkää response.actionIdentifier, mukaan lukien oletus- ja sulkemistunnisteet, ja lukekaa vastauksissa userText.
  • Jättäkää .foreground pois taustatoiminnoista, kuten torkutuksesta.
Aloita maksutta

Opi Swift tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”Ilmoitusten toiminnot ja luokat” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Ilmoitusten toiminnot ja luokat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Ilmoitusten toiminnot ja luokat”?

Lisää ilmoituksiin vuorovaikutteisia toimintoja. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Ilmoitusten toiminnot ja luokat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Push-ilmoituksiin rekisteröityminen
  2. Ilmoitussisältöjen käsittely
  3. Taustatehtävät ja päivitys
  4. Ilmoitusten toiminnot ja luokat
← Takaisin: Swift Academy