App Intents และทางลัด
เปิดให้ Siri และทางลัดเรียกใช้การทำงานได้
App Intents และทางลัด เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
App Intents คืออะไร
เฟรมเวิร์ก App Intents เปิดเผยการทำงานของแอปให้ระบบใช้งานได้ เช่น Siri, Shortcuts, Spotlight วิดเจ็ต และปุ่มการดำเนินการ คุณอธิบายการทำงานหนึ่งครั้งในรูปชนิดของ Swift แล้วการทำงานนั้นจะพร้อมใช้งานได้ทุกที่ ทั้งควบคุมด้วยเสียงและทำงานอัตโนมัติได้
import AppIntents
// Define an action as a type; the system can run it
// from Siri, Shortcuts, Spotlight, widgets, etc.การกำหนด AppIntent
อินเทนต์ต้องสอดคล้องกับ AppIntent ประกาศ title ที่ผู้ใช้มองเห็น และใช้งาน perform() ซึ่งดำเนินการแล้วคืนค่าผลลัพธ์ เฟรมเวิร์กจะค้นพบอินเทนต์นี้โดยอัตโนมัติ ไม่ต้องลงทะเบียน
import AppIntents
struct AddTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Add Task"
func perform() async throws -> some IntentResult {
// create the task here
return .result()
}
}พารามิเตอร์
ใช้ตัวห่อคุณสมบัติ @Parameter เพื่อขอข้อมูลนำเข้าจากผู้ใช้หรือ Siri ระบบจะแจ้งขอค่าที่ขาดหายและตรวจสอบความถูกต้องให้ พารามิเตอร์แต่ละรายการมีชื่อเรื่องที่แสดงในตัวแก้ไข 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()
}
}การส่งคืนค่าและกล่องโต้ตอบ
อินเทนต์สามารถส่งคืนข้อมูลและพูดยืนยันได้ รูปแบบต่าง ๆ ของ IntentResult เช่น .result(value:dialog:) ช่วยให้คุณส่งคืนค่าที่มีชนิด พร้อมกล่องโต้ตอบที่พูดหรือแสดงผล ซึ่ง Siri จะอ่านกลับให้ผู้ใช้ฟัง
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")
}
}สรุปพารามิเตอร์
parameterSummary อธิบายประโยคที่แสดงในตัวแก้ไขทางลัด โดยสอดแทรกพารามิเตอร์ลงในภาษาธรรมชาติ เช่น เพิ่ม \(taskTitle) ไปยังรายการของฉัน ทำให้การอ่านการกระทำของคุณชัดเจนเมื่อประกอบเป็นทางลัด
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()
}
}เอนทิตี
AppEntity แทนอ็อบเจ็กต์แบบจำลองที่ระบบสามารถใช้เหตุผลได้ — งาน โน้ต หรือเพลย์ลิสต์ เมื่อมีเอนทิตีและคำค้น Siri และทางลัดจะให้ผู้ใช้เลือกข้อมูลของคุณเป็นค่าพารามิเตอร์ได้
import AppIntents
struct TaskEntity: AppEntity {
static var typeDisplayRepresentation:
TypeDisplayRepresentation = "Task"
var id: String
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(id)")
}
static var defaultQuery = TaskQuery()
}คำค้นเอนทิตี
EntityQuery บอกระบบว่าจะค้นหาเอนทิตีของคุณด้วยรหัสอย่างไร และจะแสดงรายการคำแนะนำอย่างไร สิ่งนี้ทำให้เกิดตัวเลือกที่ผู้ใช้เห็นเมื่อเลือกค่าในทางลัดหรือตอบคำถามของ 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")]
}
}ทางลัดของแอป
AppShortcut ทำให้อินเทนต์เรียกใช้ด้วยเสียงได้โดยไม่ต้องตั้งค่า — ผู้ใช้ไม่จำเป็นต้องสร้างทางลัดก่อน คุณระบุวลีเรียกใช้ที่ต้องมีโทเค็นชื่อแอป เพื่อให้ Siri ทราบบริบท
import AppIntents
struct AddTaskShortcut: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: AddTaskIntent(),
phrases: ["Add a task in \(.applicationName)"],
shortTitle: "Add Task",
systemImageName: "plus")
}
}วลีเรียกใช้
วลีต้องมี \(.applicationName) เพื่อให้ Siri แยกความหมายได้ชัดเจน ระบุรูปแบบภาษาธรรมชาติหลายแบบที่ผู้ใช้อาจพูด ระบบจัดการการจับคู่ให้ ดังนั้นคุณไม่ต้องแยกวิเคราะห์ภาษาเอง
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แสดงการทำงานนอกเหนือจาก Siri
เนื่องจากอินเทนต์เป็นแบบเชิงประกาศ AddTaskIntent เดียวกันจึงใช้ขับเคลื่อนวิดเจ็ตแบบโต้ตอบ Button(intent:) ตัวควบคุมในศูนย์ควบคุม หรือการกระทำในทางลัดได้ — ทั้งหมดเรียกใช้ perform() ของคุณโดยไม่ต้องเขียนโค้ดเชื่อมต่อเพิ่มเติม
import AppIntents
import SwiftUI
// In an interactive widget:
// Button(intent: AddTaskIntent()) {
// Label("Add", systemImage: "plus")
// }
let reuse = "one intent, many surfaces"
_ = reuseการแปลอินเทนต์
ชื่อเรื่องและกล่องโต้ตอบใช้ LocalizedStringResource จึงแปลผ่านแค็ตตาล็อกสตริงของคุณได้ วลีเรียกใช้ก็แปลตามแต่ละภาษาเช่นกัน ทำให้ Siri ตอบสนองผู้ใช้ด้วยภาษาของตนเอง
import AppIntents
struct GreetIntent: AppIntent {
static var title: LocalizedStringResource = "Greet"
func perform() async throws
-> some IntentResult & ProvidesDialog {
.result(dialog: "Welcome back")
}
}ทบทวนสั้น ๆ
ลองทบทวนว่าอะไรทำให้วลีของ AppShortcut ใช้ได้
สรุปทบทวน
คุณได้เรียนรู้เรื่องอินเทนต์ของแอป:
- ทำให้สอดคล้องกับ
AppIntentโดยมีtitleและperform()รับข้อมูลนำเข้าผ่าน@Parameterและอธิบายข้อมูลนั้นด้วยparameterSummary - จำลองข้อมูลเป็น
AppEntityพร้อมEntityQueryสำหรับตัวเลือกและคำแนะนำ - เปิดให้ใช้การกระทำด้วยเสียงผ่านวลีของ
AppShortcutที่มี\(.applicationName) - อินเทนต์เดียวกันรองรับ Siri ทางลัด วิดเจ็ตแบบโต้ตอบ และตัวควบคุมต่าง ๆ พร้อมแปลภาษาได้ผ่าน
LocalizedStringResource
คำถามที่พบบ่อย
บทเรียน “App Intents และทางลัด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “App Intents และทางลัด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “App Intents และทางลัด”
เปิดให้ Siri และทางลัดเรียกใช้การทำงานได้ คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “App Intents และทางลัด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างวิดเจ็ตด้วย WidgetKit
- ผู้ให้บริการไทม์ไลน์และสแนปชอต
- ภาพรวมส่วนขยายแอป
- App Intents และทางลัด