Swift Academy · Oppitunti

App Intents ja Shortcuts

Tuokaa toimintoja Sirin ja Shortcutsin käytettäviksi.

Oppitunti 4/413 vaihetta

App Intents ja Shortcuts 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.

Mitä App Intentit ovat

App Intents -kehys tuo sovelluksen toiminnot järjestelmän käytettäviksi — Sirille, Shortcutsille, Spotlightille, widgeteille ja Action buttonille. Kuvaatte toiminnon kerran Swift-tyyppinä, minkä jälkeen se on käytettävissä kaikkialla ääniohjattavana ja automatisoitavana.

import AppIntents
// Define an action as a type; the system can run it
// from Siri, Shortcuts, Spotlight, widgets, etc.

AppIntentin määrittäminen

Intent noudattaa AppIntent-protokollaa, ilmoittaa käyttäjälle näkyvän title-ominaisuuden ja toteuttaa perform()-menetelmän, joka suorittaa työn ja palauttaa tuloksen. Kehys löytää sen automaattisesti — rekisteröintiä ei tarvita.

import AppIntents
struct AddTaskIntent: AppIntent {
    static var title: LocalizedStringResource = "Add Task"
    func perform() async throws -> some IntentResult {
        // create the task here
        return .result()
    }
}

Parametrit

Käyttäkää @Parameter-ominaisuuswrapperia pyytääksenne syötettä käyttäjältä tai Siriltä. Järjestelmä pyytää puuttuvia arvoja ja tarkistaa ne. Jokaisella parametrilla on Shortcuts-editorissa näkyvä otsikko.

import AppIntents
struct AddTaskIntent: AppIntent {
    static var title: LocalizedStringResource = "Add Task"
    @Parameter(title: "Title")
    var taskTitle: String
    func perform() async throws -> some IntentResult {
        return .result()
    }
}

Arvojen palauttaminen ja dialogi

Intent voi palauttaa tietoja ja lausua vahvistuksen. IntentResult-muunnelmien, kuten .result(value:dialog:), avulla voidaan palauttaa tyypitetty arvo sekä puhuttu tai näkyvä dialogi, jonka Siri lukee käyttäjälle.

import AppIntents
struct CountTasksIntent: AppIntent {
    static var title: LocalizedStringResource = "Count Tasks"
    func perform() async throws
        -> some IntentResult & ProvidesDialog {
        let count = 5
        return .result(
            dialog: "You have \(count) tasks")
    }
}

Parametriyhteenveto

parameterSummary kuvaa Shortcuts-editorissa näytettävää lausetta ja yhdistää parametrit luonnolliseen kieleen, esimerkiksi Lisää \(taskTitle) luettelooni. Sen ansiosta toiminto on helppo ymmärtää, kun se yhdistetään pikakomentoihin.

import AppIntents
struct AddTaskIntent: AppIntent {
    static var title: LocalizedStringResource = "Add Task"
    @Parameter(title: "Title") var taskTitle: String
    static var parameterSummary: some ParameterSummary {
        Summary("Add \(\.$taskTitle) to my list")
    }
    func perform() async throws -> some IntentResult {
        .result()
    }
}

Entiteetit

AppEntity edustaa mallisovelluksen objektia, kuten tehtävää, muistiinpanoa tai soittolistaa, jota järjestelmä voi käsitellä. Entiteetin ja kyselyn avulla Siri ja Shortcuts voivat antaa käyttäjän valita omista tiedoistasi parametrin arvon.

import AppIntents
struct TaskEntity: AppEntity {
    static var typeDisplayRepresentation:
        TypeDisplayRepresentation = "Task"
    var id: String
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "\(id)")
    }
    static var defaultQuery = TaskQuery()
}

Entiteettikyselyt

EntityQuery kertoo järjestelmälle, miten entiteetit haetaan tunnisteen perusteella ja miten ehdotukset luetellaan. Sen avulla toteutetaan valitsin, jonka käyttäjä näkee valitessaan arvoa Shortcutsissa tai vastatessaan Sirille.

import AppIntents
struct TaskQuery: EntityQuery {
    func entities(for ids: [String]) async throws
        -> [TaskEntity] {
        ids.map { TaskEntity(id: $0) }
    }
    func suggestedEntities() async throws -> [TaskEntity] {
        [TaskEntity(id: "Groceries")]
    }
}

App-pikakomennot

AppShortcut tekee intentistä äänellä suoritettavan ilman määrityksiä — käyttäjän ei tarvitse ensin rakentaa pikakomentoa. Määrität käynnistyslauseet, joiden on sisällettävä sovelluksen nimitunniste, jotta Siri tietää asiayhteyden.

import AppIntents
struct AddTaskShortcut: AppShortcutsProvider {
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: AddTaskIntent(),
            phrases: ["Add a task in \(.applicationName)"],
            shortTitle: "Add Task",
            systemImageName: "plus")
    }
}

Käynnistyslauseet

Lauseiden on sisällettävä \(.applicationName), jotta Siri voi erottaa ne toisistaan. Tarjoa useita luonnollisia muotoiluja, joita käyttäjät saattavat sanoa. Järjestelmä huolehtii vastaavuuksien tunnistamisesta, joten sinun ei tarvitse jäsentää kieltä itse.

import AppIntents
// Provide variants; applicationName is required:
// phrases: [
//   "Add a task in \(.applicationName)",
//   "Create a task with \(.applicationName)",
//   "New \(.applicationName) task"
// ]
let phrases = "include applicationName token"
_ = phrases

Käyttö myös Sirin ulkopuolella

Deklaratiivisuuden ansiosta sama AddTaskIntent voi ohjata interaktiivista widgettiä Button(intent:), Control Center -ohjainta tai Shortcuts-toimintoa — kaikki suorittavat perform()-metodisi ilman ylimääräistä liitäntälogiikkaa.

import AppIntents
import SwiftUI
// In an interactive widget:
// Button(intent: AddTaskIntent()) {
//     Label("Add", systemImage: "plus")
// }
let reuse = "one intent, many surfaces"
_ = reuse

Intentien lokalisointi

Otsikot ja dialogi käyttävät LocalizedStringResource-resurssia, joten ne käännetään String Catalogin avulla. Myös käynnistyslauseet lokalisoidaan kielikohtaisesti, jolloin Siri voi vastata käyttäjille heidän omalla kielellään.

import AppIntents
struct GreetIntent: AppIntent {
    static var title: LocalizedStringResource = "Greet"
    func perform() async throws
        -> some IntentResult & ProvidesDialog {
        .result(dialog: "Welcome back")
    }
}

Pikatarkistus

Palauttakaa mieleenne, mikä tekee AppShortcutin lauseista kelvollisia.

Kertaus

Opitte App Intents -teknologiasta:

  • Toteuttakaa AppIntent määrittämällä title ja perform(); kerätkää syöte @Parameter-määrityksellä ja kuvatkaa se parameterSummary-määrityksellä.
  • Mallintakaa tiedot AppEntity-entiteettinä ja käyttäkää EntityQuery-kyselyä valitsimia ja ehdotuksia varten.
  • Tuokaa äänitoiminnot saataville AppShortcut-lauseilla, jotka sisältävät \(.applicationName)-tunnisteen.
  • Sama intent ohjaa Siriä, Shortcutsia, interaktiivisia widgettejä ja ohjaimia, ja se lokalisoidaan LocalizedStringResource-resurssin avulla.
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 ”App Intents ja Shortcuts” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “App Intents ja Shortcuts”. 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 ”App Intents ja Shortcuts”?

Tuokaa toimintoja Sirin ja Shortcutsin käytettäviksi. 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 ”App Intents ja Shortcuts”-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. WidgetKit-widgetin rakentaminen
  2. Aikajanan tarjoajat ja tilannevedokset
  3. App Extensions -laajennusten yleiskatsaus
  4. App Intents ja Shortcuts
← Takaisin: Swift Academy