Swift Academy · Pelajaran

App Intents dan Shortcuts

Sediakan tindakan untuk Siri dan Shortcuts.

Pelajaran 4 dari 413 langkah

App Intents dan Shortcuts adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Apa Itu App Intents

Kerangka kerja App Intents memaparkan tindakan aplikasi Anda kepada sistem—Siri, Shortcuts, Spotlight, widget, dan tombol tindakan. Anda menjelaskan suatu tindakan sekali sebagai tipe Swift, lalu tindakan tersebut tersedia di mana saja, dapat dikendalikan dengan suara, dan dapat diotomatisasi.

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

Mendefinisikan AppIntent

Sebuah tindakan menerapkan AppIntent, mendeklarasikan title yang ditujukan kepada pengguna, lalu menerapkan perform() untuk melakukan pekerjaan dan mengembalikan hasil. Kerangka kerja menemukannya secara otomatis—tidak diperlukan pendaftaran.

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

Parameter

Gunakan pembungkus properti @Parameter untuk meminta masukan dari pengguna atau Siri. Sistem meminta nilai yang belum diisi dan memvalidasinya. Setiap parameter memiliki judul yang ditampilkan di editor Shortcuts.

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

Mengembalikan Nilai dan Dialog

Sebuah tindakan dapat mengembalikan data dan menyampaikan konfirmasi. Varian IntentResult seperti .result(value:dialog:) memungkinkan Anda mengembalikan nilai bertipe beserta dialog yang diucapkan atau ditampilkan, lalu dibacakan kembali oleh Siri kepada pengguna.

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

Ringkasan Parameter

parameterSummary menjelaskan kalimat yang ditampilkan di editor Shortcuts dengan menyisipkan parameter ke dalam bahasa alami, seperti Tambahkan \(taskTitle) ke daftar saya. Ini membuat tindakan Anda mudah dipahami saat dirangkai menjadi pintasan.

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

Entitas

Sebuah AppEntity merepresentasikan objek model yang dapat dipahami oleh sistem—tugas, catatan, atau daftar putar. Dengan entitas dan kueri, Siri dan Shortcuts dapat memungkinkan pengguna memilih data Anda sebagai nilai parameter.

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

Kueri Entitas

Sebuah EntityQuery memberi tahu sistem cara menemukan entitas Anda berdasarkan id dan cara menampilkan saran. Ini mendukung pemilih yang dilihat pengguna saat memilih nilai di Shortcuts atau menjawab Siri.

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")]
    }
}

Pintasan Aplikasi

Sebuah AppShortcut membuat tindakan dapat dijalankan dengan suara tanpa penyiapan apa pun—pengguna tidak perlu membuat pintasan terlebih dahulu. Anda menyediakan frasa pemicu yang harus menyertakan penanda nama aplikasi agar Siri mengetahui konteksnya.

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

Frasa Pemicu

Frasa harus memuat \(.applicationName) agar Siri dapat membedakan maksudnya. Sediakan beberapa variasi alami yang mungkin diucapkan pengguna. Sistem menangani pencocokannya, jadi Anda tidak perlu mengurai bahasa sendiri.

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

Menghadirkan di Luar Siri

Karena tindakan bersifat deklaratif, AddTaskIntent yang sama dapat menggerakkan widget interaktif Button(intent:), kontrol Pusat Kontrol, atau tindakan Shortcuts—semuanya menjalankan perform() Anda tanpa kode penghubung tambahan.

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

Melokalkan Tindakan

Judul dan dialog menggunakan LocalizedStringResource, sehingga dapat diterjemahkan melalui String Catalog Anda. Frasa pemicu juga dilokalkan untuk setiap bahasa, sehingga Siri dapat merespons pengguna dalam bahasa mereka sendiri.

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

Pemeriksaan Singkat

Ingatlah apa yang membuat frasa AppShortcut valid.

Rangkuman

Anda telah mempelajari App Intents:

  • Sesuaikan dengan AppIntent menggunakan title dan perform(); kumpulkan masukan melalui @Parameter dan jelaskan dengan parameterSummary.
  • Modelkan data sebagai AppEntity dengan EntityQuery untuk pemilih dan saran.
  • Sediakan tindakan suara melalui frasa AppShortcut yang menyertakan \(.applicationName).
  • Tindakan yang sama mendukung Siri, Shortcuts, widget interaktif, dan kontrol, serta dapat dilokalkan melalui LocalizedStringResource.
Gratis untuk memulai

Belajar Swift dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
122
Pelajaran
409

Pertanyaan yang Sering Diajukan

Apakah pelajaran “App Intents dan Shortcuts” gratis?

Ya — teks lengkap “App Intents dan Shortcuts” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “App Intents dan Shortcuts”?

Sediakan tindakan untuk Siri dan Shortcuts. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “App Intents dan Shortcuts” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membangun WidgetKit Widget
  2. Penyedia Linimasa dan Snapshot
  3. Ikhtisar Ekstensi Aplikasi
  4. App Intents dan Shortcuts
← Kembali ke Swift Academy