0Pricing
Swift Academy · درس

App Intents والاختصارات

أتِحوا الإجراءات لـ Siri والاختصارات

App Intents والاختصارات درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

ما هي App Intents

يعرّض إطار عمل App Intents إجراءات تطبيقكم للنظام، بما في ذلك Siri والاختصارات وSpotlight والودجات وزر الإجراءات. وتصفون الإجراء مرة واحدة على شكل نوع Swift، فيصبح متاحًا في كل مكان وقابلًا للتحكم صوتيًا والأتمتة.

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

تعريف AppIntent

يلتزم الـ intent بالبروتوكول 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. يطلب النظام القيم الناقصة ويتحقق من صحتها. ولكل معلمة عنوان يظهر في محرر الاختصارات.

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

إرجاع القيم والحوار

يمكن لـ intent إرجاع البيانات ونطق رسالة تأكيد. تتيح تنويعات 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 الجملة المعروضة في محرر Shortcuts، ويدمج المعلمات في لغة طبيعية مثل إضافة \(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 وShortcuts للمستخدمين الاختيار من بياناتكم كقيمة لمعلمة.

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

استعلامات الكيانات

يخبر EntityQuery النظام بكيفية العثور على كياناتكم باستخدام المعرّف، وكيفية عرض الاقتراحات. وهذا يشغّل أداة الاختيار التي يراها المستخدم عند تحديد قيمة في Shortcuts أو عند الإجابة عن 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 تنفيذ intent صوتيًا من دون أي إعداد، فلا يحتاج المستخدم إلى إنشاء اختصار أولًا. وتحدّدون عبارات تشغيل يجب أن تتضمن رمز اسم التطبيق حتى يعرف 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

لأن intents تصريحية، يمكن لـ AddTaskIntent نفسه تشغيل ويدجت تفاعلي باستخدام Button(intent:)، أو عنصر تحكم في Control Center، أو إجراء في Shortcuts، وكل ذلك ينفّذ perform() من دون إعدادات إضافية.

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

توطين intents

تستخدم العناوين والرسائل LocalizedStringResource، ولذلك تُترجم عبر String Catalog الخاص بكم. كما تُوطَّن عبارات التشغيل لكل لغة، مما يتيح لـ Siri الاستجابة للمستخدمين بلغتهم.

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

اختبار سريع

تذكّروا ما الذي يجعل عبارات AppShortcut صالحة.

مراجعة

لقد تعلّمتم App Intents:

  • الالتزام بـ AppIntent مع توفير title وperform()، وجمع المدخلات باستخدام @Parameter ووصفها عبر parameterSummary.
  • نمذجة البيانات باستخدام AppEntity مع EntityQuery لتوفير أدوات الاختيار والاقتراحات.
  • إتاحة الإجراءات الصوتية من خلال عبارات AppShortcut التي تتضمن \(.applicationName).
  • يمكن لـ intent نفسه تشغيل Siri وShortcuts والودجات التفاعلية وعناصر التحكم، كما يُوطَّن باستخدام LocalizedStringResource.

الأسئلة الشائعة

هل درس «App Intents والاختصارات» مجاني؟

نعم — نص درس «App Intents والاختصارات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «App Intents والاختصارات»؟

أتِحوا الإجراءات لـ Siri والاختصارات تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «App Intents والاختصارات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء Widget باستخدام WidgetKit
  2. موفّرو المخططات الزمنية واللقطات
  3. نظرة عامة على امتدادات التطبيقات
  4. App Intents والاختصارات
← العودة إلى Swift Academy