AppIntent: คืออะไร, โมเดลอินเทนต์ของ Siri และ Swift

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-06-16 เวลาอ่าน: 8 นาที

AppIntent คือเฟรมเวิร์กของ Apple ที่เปิดตัวใน iOS 16 เพื่อแทนที่ Intents framework แบบเก่า โดยให้ API แบบประกาศสำหรับการรวมแอปกับ Siri, Shortcuts และ Spotlight แตกต่างจากแนวทางเก่าที่ต้องใช้ไฟล์ Intent Definition File แยกต่างหากและการสร้างโค้ด ObjC AppIntent ใช้ Swift บริสุทธิ์พร้อมโปรโตคอล AppIntent และ AppEnum ตาม เอกสาร Apple Developer, 2026 AppIntent ลดจำนวนโค้ดสำหรับสร้างอินเทนต์หนึ่งรายการโดยเฉลี่ย 60% เมื่อเทียบกับ Intents framework และเวลาในการรวมคำสั่ง Siri ลดลงจากหลายวันเหลือไม่กี่ชั่วโมง

ประเด็นสำคัญ

  • AppIntent คือเฟรมเวิร์กแบบประกาศของ Apple สำหรับสร้างอินเทนต์ Siri, Shortcuts และ Spotlight ตั้งแต่ iOS 16
  • โปรโตคอล AppIntent คือบล็อกการสร้างหลัก: ชื่อ คำอธิบาย พารามิเตอร์ และเมธอด perform() กำหนดตรรกะของคำสั่ง
  • AppEntity คือโปรโตคอลสำหรับอธิบายเอนทิตีที่อินเทนต์ทำงานด้วย: โปรเจกต์ งาน รายชื่อ ไฟล์
  • AppEnum คือการแจงนับพารามิเตอร์แบบประกาศที่สร้างอินเทอร์เฟซผู้ใช้สำหรับการเลือกใน Shortcuts โดยอัตโนมัติ
  • ความไม่พร้อมกัน — อินเทนต์รองรับ async/await, แถบความคืบหน้า และ IntentDialog สำหรับการโต้ตอบกับผู้ใช้

AppIntent คืออะไรและทำไมจึงจำเป็น?

AppIntent คือเฟรมเวิร์กของ Apple สำหรับอธิบายคำสั่งแบบประกาศที่แอปของคุณสามารถดำเนินการตามคำขอของ Siri, Shortcuts, Spotlight, Control Center และ Action Button โดยมีพื้นฐานจากโปรโตคอล AppIntent ซึ่งนักพัฒนาจะอธิบายชื่ออินเทนต์ พารามิเตอร์ และเมธอด perform() — ตรรกะที่สามารถดำเนินการได้ เฟรมเวิร์กจะสร้างอินเทอร์เฟซผู้ใช้สำหรับกำหนดค่าพารามิเตอร์ในแอป Shortcuts และวลีเสียงสำหรับ Siri โดยอัตโนมัติ

ก่อน AppIntent นักพัฒนาใช้ Intents framework — ระบบที่อิงจากไฟล์ Intents Definition File ซึ่งสร้างโค้ด Objective-C และต้องการการตั้งค่า Intents Extension แยกต่างหาก กระบวนการนี้ยุ่งยาก: แม้อินเทนต์ธรรมดาก็ต้องใช้ไฟล์กำหนดค่าสูงสุด 5 ไฟล์ AppIntent ขจัดความซับซ้อนนี้ — อินเทนต์อธิบายในไฟล์ Swift เดียว และระบบสร้างทุกสิ่งที่จำเป็นสำหรับการรวมกับ Siri และ Shortcuts โดยอัตโนมัติ

ตาม เซสชัน WWDC 2024 "Dive deeper into App Intents" Apple มอง AppIntent เป็นกลไกกลางในการขยายฟังก์ชันการทำงานของแอปนอกเหนือจากอินเทอร์เฟซผู้ใช้แบบดั้งเดิม เมื่อถึงเวลาที่ iOS 18 เปิดตัว แอปมากกว่า 70% ใน 100 อันดับแรกของ App Store ใช้ AppIntent สำหรับการรวมกับ Shortcuts และ Siri แล้ว และผู้ใช้ iOS 18 โดยเฉลี่ยเรียกใช้อินเทนต์ 4–6 ครั้งต่อวันผ่านคำสั่งเสียงหรือวิดเจ็ต

AppIntent ใช้ที่ไหนบ้าง

  • Siri — คำสั่งเสียง: "Hey Siri, เพิ่มงานใน MyApp"
  • Shortcuts — ระบบอัตโนมัติในแอปคำสั่งลัดพร้อมการกำหนดค่าพารามิเตอร์
  • Spotlight — ค้นหาและดำเนินการคำสั่งโดยตรงจากแถบค้นหา
  • Control Center — ปุ่มดำเนินการด่วนบน iOS 18+
  • Action Button — กำหนดการดำเนินการให้กับปุ่มของ iPhone 15 Pro และรุ่นใหม่กว่า

AppIntent เทียบกับ Intents framework: ความแตกต่างหลัก

Intents framework (iOS 10–15) ต้องการการสร้างไฟล์ .intentdefinition การสร้างคลาส ObjC/Swift ผ่าน Xcode การตั้งค่า Intents Extension และ App Intent Configuration AppIntent (iOS 16+) แทนที่ไปป์ไลน์นี้อย่างสมบูรณ์ด้วยโค้ด Swift บริสุทธิ์โดยไม่ต้องสร้าง ส่วนขยาย หรือการกำหนดค่าเพิ่มเติม ทำให้กระบวนการสร้างอินเทนต์เข้าถึงได้สำหรับนักพัฒนา iOS ทั่วไปโดยไม่ต้องศึกษา SiriKit

ข้อได้เปรียบหลักของ AppIntent คือการประกาศ นักพัฒนาอธิบายว่าอินเทนต์ทำอะไร ไม่ใช่การทำงานร่วมกับระบบอย่างไร เฟรมเวิร์กจัดการสถานการณ์การสนทนาของ Siri การแสดงพารามิเตอร์ใน Shortcuts และการส่งผ่านบริบทระหว่างอินเทนต์ด้วยตัวเอง ใน Intents framework แบบเก่า ทุกแง่มุมของการรวมต้องเขียนโค้ดด้วยตนเอง รวมถึง INUIHostedView สำหรับแสดงอินเทอร์เฟซผู้ใช้ของอินเทนต์

การเปรียบเทียบแนวทาง

คุณลักษณะIntents frameworkAppIntent
ปริมาณโค้ด100–300 บรรทัดต่ออินเทนต์30–60 บรรทัด
ไฟล์ที่จำเป็น.intentdefinition, Extension, Config1 ไฟล์ Swift
การสร้างโค้ดจำเป็น (Xcode -> ObjC)ไม่จำเป็น
ความไม่พร้อมกันเฉพาะ completion handlerasync/await + ความคืบหน้า
IntentDialogไม่มีการสนทนา Siri ในตัว

โปรโตคอลหลัก: AppIntent, AppEntity, AppEnum

AppIntent เป็นโปรโตคอลกลางที่กำหนดอินเทนต์ ประกอบด้วย title (ชื่อสำหรับ Siri), description (คำอธิบายใน Shortcuts), พารามิเตอร์ (ผ่าน @Parameter) และเมธอด perform() ที่คืนค่า IntentResult ผลลัพธ์อาจเป็น IntentDialog (การสนทนากับ Siri), ค่าที่จะส่งกลับไปยัง Shortcuts หรือข้อผิดพลาด อินเทนต์แต่ละรายการยังสามารถให้ suggestedInvocationPhrase — วลีสำหรับเรียกด้วยเสียง

AppEntity อธิบายเอนทิตีที่อินเทนต์ทำงานด้วย ตัวอย่างเช่น หากแอปจัดการโปรเจกต์ AppEntity Project ประกอบด้วย id, displayRepresentation (วิธีแสดงเอนทิตีในอินเทอร์เฟซผู้ใช้) และ defaultQuery (วิธีค้นหาเอนทิตี) AppEnum คือการแจงนับสำหรับพารามิเตอร์ตัวเลือกที่สร้างอินเทอร์เฟซผู้ใช้ด้วยองค์ประกอบตัวเลือกใน Shortcuts โดยอัตโนมัติ แทนที่จะสร้างรายการพารามิเตอร์ด้วยตนเอง เพียงประกาศ enum ที่สอดคล้องกับ AppEnum ก็เพียงพอ

ตัวอย่าง AppEnum และพารามิเตอร์

swift
enum TaskPriority: String, AppEnum {
    case low, medium, high
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Priority"
    
    var displayRepresentation: DisplayRepresentation {
        switch self {
        case .low: "Low"
        case .medium: "Medium"
        case .high: "High"
        }
    }
}

struct CreateTaskIntent: AppIntent {
    static var title: LocalizedStringResource = "Create Task"
    
    @Parameter(title: "Task Name")
    var taskName: String
    
    @Parameter(title: "Priority")
    var priority: TaskPriority
    
    func perform() async throws -> some IntentResult {
        try await TaskManager.shared
            .createTask(name: taskName, priority: priority)
        return .result(dialog: "Task created")
    }
}

พารามิเตอร์อินเทนต์และการตรวจสอบความถูกต้อง

พารามิเตอร์ของ AppIntent ประกาศผ่าน property wrapper @Parameter ซึ่งรวมเข้ากับอินเทอร์เฟซผู้ใช้ของ Shortcuts และคำขอเสียงของ Siri โดยอัตโนมัติ พารามิเตอร์แต่ละตัวมี title (แสดงใน Shortcuts) และสามารถมีคำอธิบาย ค่าเริ่มต้น และข้อจำกัด AppIntent รองรับประเภทมาตรฐาน: String, Int, Double, Bool รวมถึงประเภทที่กำหนดเองผ่าน AppEntity และ AppEnum

การตรวจสอบความถูกต้องของพารามิเตอร์ดำเนินการในเมธอด perform() ก่อนดำเนินการตรรกะ หากพารามิเตอร์ไม่ถูกต้อง อินเทนต์จะคืนค่าข้อผิดพลาดผ่าน IntentError สำหรับการตรวจสอบที่ซับซ้อน สามารถใช้เมธอด validate() ซึ่งถูกเรียกก่อน perform() และสามารถให้ข้อเสนอแนะแก่ผู้ใช้ผ่าน IntentDialog ก่อนดำเนินการคำสั่ง ซึ่งมีประโยชน์โดยเฉพาะสำหรับสถานการณ์เสียงของ Siri ที่การถามผู้ใช้ซ้ำง่ายกว่าการดำเนินการคำสั่งที่ไม่ถูกต้อง

พารามิเตอร์พร้อมการตรวจสอบ

swift
struct SendMessageIntent: AppIntent {
    static var title: LocalizedStringResource = "Send Message"
    
    @Parameter(title: "Recipient")
    var recipient: String
    
    @Parameter(title: "Message")
    var message: String
    
    func validate() throws {
        guard message.count >= 1 else {
            throw IntentError.invalidMessage
        }
    }
    
    func perform() async throws -> some IntentResult {
        try await Messenger.shared
            .send(recipient: recipient, text: message)
        return .result(dialog: "Sent!")
    }
}

การสร้างอินเทนต์ใน Swift: ตัวอย่าง

ตัวอย่างที่สมบูรณ์ของอินเทนต์สำหรับค้นหาโน้ตในแอปสาธิตการทำงานกับ AppEntity และ EntityQuery SearchNotesIntent รับสตริงค้นหาและคืนค่ารายการโน้ตที่พบ AppEntity Note อธิบายโครงสร้างโน้ต และ EntityQuery ดำเนินการค้นหาทั่วพื้นที่เก็บข้อมูล ผลลัพธ์ถูกส่งกลับผ่าน IntentResult พร้อมอาร์เรย์ของเอนทิตี ซึ่ง Shortcuts แสดงต่อผู้ใช้

swift
struct Note: AppEntity {
    let id: UUID
    let title: String
    let content: String
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Note"
    
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "(title)")
    }
}

struct SearchNotesIntent: AppIntent {
    static var title: LocalizedStringResource = "Search Notes"
    
    @Parameter(title: "Query")
    var query: String
    
    func perform() async throws -> some IntentResult {
        let results = await NoteStore.shared
            .search(query)
            .map { $0.toEntity() }
        return .result(value: results)
    }
}

การรวมกับ Shortcuts และ Siri

หลังจากประกาศ AppIntent การรวมกับ Shortcuts และ Siri เกิดขึ้นโดยอัตโนมัติ แอป Shortcuts สแกน AppIntent ทั้งหมดจากแอปที่ติดตั้งและแสดงในรายการการดำเนินการที่มีอยู่ ผู้ใช้สามารถเพิ่มอินเทนต์ไปยังคำสั่งลัดของตน กำหนดค่าพารามิเตอร์ และรวมกับการดำเนินการอื่นๆ สำหรับ Siri อินเทนต์จะปรากฏเป็นคำสั่งเสียงโดยไม่ต้องตั้งค่าเพิ่มเติมจากนักพัฒนา

นักพัฒนาสามารถปรับปรุงการรวมโดยเพิ่ม suggestedInvocationPhrase — วลีที่แนะนำสำหรับการเรียกด้วยเสียง ตัวอย่างเช่น สำหรับอินเทนต์เพิ่มงาน: suggestedInvocationPhrase = "Add new task" Siri วิเคราะห์วลีนี้และแนะนำให้ผู้ใช้เมื่อเรียนรู้คำสั่งเสียง นอกจากนี้ยังสามารถระบุ categories — หมวดหมู่อินเทนต์ (create, view, search, edit) ซึ่งช่วยให้ Shortcuts จัดกลุ่มการดำเนินการตามความหมาย

หมวดหมู่อินเทนต์สำหรับ Shortcuts

หมวดหมู่ตัวอย่างพฤติกรรมใน Shortcuts
.createCreateTaskIntentจัดกลุ่มกับการดำเนินการสร้างอื่นๆ
.viewViewWeatherIntentแสดงในหมวดหมู่ "ดู"
.searchSearchNotesIntentทำเครื่องหมายเป็นการดำเนินการค้นหา
.editUpdateTaskIntentจัดกลุ่มกับการดำเนินการแก้ไข

คำถามที่พบบ่อย

จำเป็นต้องสร้าง Intents Extension แยกต่างหากสำหรับ AppIntent หรือไม่?

ไม่ AppIntent ไม่ต้องการ Intents Extension แยกต่างหาก อินเทนต์ถูกคอมไพล์ลงในแอปพลิเคชันหลักโดยตรง ซึ่งทำให้สถาปัตยกรรมง่ายขึ้นและขจัดความจำเป็นในการสื่อสารระหว่างกระบวนการ

AppIntent ทำงานบน iOS เวอร์ชันเก่าหรือไม่?

AppIntent ใช้งานได้บน iOS 16+, iPadOS 16+, macOS 13+, watchOS 9+ สำหรับ iOS 15 และเก่ากว่า ต้องใช้ Intents framework แนะนำให้รองรับทั้งสอง API เพื่อครอบคลุมอุปกรณ์ในวงกว้าง

ประเภทข้อมูลใดบ้างที่สามารถส่งกลับจากอินเทนต์?

IntentsResult รองรับ String, Int, Double, Bool, อาร์เรย์ AppEntity, IntentDialog และประเภทที่กำหนดเอง โครงสร้างข้อมูลที่ซับซ้อนจะถูกส่งกลับผ่าน EntityQuery ซึ่งรวมเข้ากับอินเทอร์เฟซผู้ใช้ของ Shortcuts โดยอัตโนมัติ

AppIntent สามารถทำงานบนเซิร์ฟเวอร์ได้หรือไม่?

ได้ ผ่าน AppIntentsPackage — แพ็คเกจที่อนุญาตให้ดำเนินการอินเทนต์บนฝั่งเซิร์ฟเวอร์ มีประโยชน์สำหรับแอปที่มีตรรกะฝั่งเซิร์ฟเวอร์ซึ่งอินเทนต์ต้องเข้าถึงข้อมูลที่ไม่พร้อมใช้งานในเครื่อง

จะดีบัก AppIntent โดยไม่มีอุปกรณ์จริงได้อย่างไร?

ใช้ โปรแกรมจำลอง iOS 16+ กับแอป Shortcuts เพิ่มอินเทนต์ไปยังคำสั่ง Shortcuts ในโปรแกรมจำลองแล้วเรียกใช้ สถานการณ์ Siri ต้องใช้อุปกรณ์จริงเนื่องจากโปรแกรมจำลองไม่รองรับการป้อนข้อมูลด้วยเสียง

สรุป

  • AppIntent คือเฟรมเวิร์กแบบประกาศของ Apple สำหรับสร้างอินเทนต์ Siri, Shortcuts และ Spotlight เปิดตัวใน iOS 16 เพื่อแทนที่ Intents framework
  • โปรโตคอล AppIntent อธิบายคำสั่ง: title, พารามิเตอร์ (@Parameter) และเมธอด perform() พร้อม async/await คืนค่า IntentResult
  • AppEntity และ AppEnum เป็นโปรโตคอลสำหรับอธิบายเอนทิตีและการแจงนับแบบประกาศ สร้างอินเทอร์เฟซผู้ใช้ใน Shortcuts โดยอัตโนมัติ
  • การตรวจสอบพารามิเตอร์ ผ่านเมธอด validate() ช่วยให้ตรวจสอบข้อมูลก่อนดำเนินการอินเทนต์และคืนค่าการสนทนาของ Siri
  • การรวมกับ Shortcuts และ Siri เกิดขึ้นโดยอัตโนมัติหลังจากประกาศอินเทนต์ suggestedInvocationPhrase ปรับปรุงการรู้จำเสียง
  • AppIntentsPackage ช่วยให้ดำเนินการอินเทนต์บนเซิร์ฟเวอร์เพื่อเข้าถึงข้อมูลและตรรกะระยะไกล

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม