שילוב Apple Shortcuts באמצעות App Intents עבור iOS

משתמשי אפליקציית ה-iOS שלך רוצים להפוך שגרות יומיומיות לאוטומטיות באמצעות Shortcuts, אך ללא אינטגרציה הם נאלצים לפתוח את האפליקציה ידנית עבור כל פעולה. אנו מפתחים אינטגרציה של Apple Shortcuts המבוססת על App Intents, המאפשרת ביצוע משימות ללא פתיחת האפליקציה. הצוות שלנו מספק את הפרויקט במפתח מלא—מתכנון ועד יישום—עם תמיכה מתמשכת והבטחת תאימות לגרסאות iOS הנוכחיות.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
שילוב Apple Shortcuts באמצעות App Intents עבור iOS
מורכב
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

בנית אפליקציית מובייל, והמשתמשים שלך רוצים להפוך תרחישים לאוטומטיים באמצעות Shortcuts. ללא אינטגרציית App Intents, הם נאלצים לפתוח את האפליקציה ידנית עבור כל פעולה. App Intents הפכו לסטנדרט עבור אוטומציה של iOS, ומאפשרים להריץ משימות מבלי לפתוח את האפליקציה.

אנו מספקים אינטגרציה עמוקה: מפקודות בסיסיות ועד להעברת נתונים מורכבים בין פעולות. עם למעלה מ-20 פרויקטי iOS מוצלחים, אנו מבטיחים תאימות לגרסאות ה-iOS העדכניות ואוטומציה ללא תקלות. חיסכון בעלויות התמיכה האופייני לאחר אימוץ App Intents מקזז לחלוטין את השקעת הפיתוח תוך חודשים. יתרה מזאת, אוטומציה של הזנת נתונים שגרתית מפחיתה את עלויות בדיקות ה-QA הידניות בשיעור דומה.

למה לבחור ב-App Intents על פני SiriKit?

לפני App Intents, האינטגרציה התבססה על SiriKit עם קבצי .intentdefinition ו-INExtension ביעד נפרד. זה דרש הרבה קוד boilerplate ויצירת קוד. החל מ-iOS 16, מסגרת AppIntents פשוטה יותר: פחות קוד, אינטנטים גלויים ב-Shortcuts ללא הגדרה נוספת. הנה השוואה:

תכונה SiriKit App Intents
מורכבות גבוהה (יעד נפרד, יצירת קוד) נמוכה (קובץ יחיד)
ביצועים בינוניים גבוהים (פועל מבלי לפתוח את האפליקציה)
תמיכת iOS iOS 10+ iOS 16+
פרמטרים דינמיים באמצעות INObject באמצעות AppEntity (פשוט יותר)
App Shortcuts לא מובנה

App Intents מנצחים בכל מדד עבור פרויקטים חדשים. הפיתוח מהיר פי 3 מאשר SiriKit—פחות קוד, פחות תבניות. אנו ממליצים לבצע הגירה מ-SiriKit אם האפליקציה שלך עדיין משתמשת בגישה הישנה. ההגירה מקצרת את זמן הפיתוח לאוטומציות חדשות ב-40%.

כיצד App Intents מייעלים את הפיתוח

אינטנט מינימלי עבור Shortcuts:

struct StartWorkoutIntent: AppIntent {
    static var title: LocalizedStringResource = "Начать тренировку"
    static var description = IntentDescription(
        "Запускает тренировку в приложении",
        categoryName: "Тренировки"
    )
    static var openAppWhenRun: Bool = false // не открывать приложение
    @Parameter(title: "Тип тренировки")
    var workoutType: WorkoutType
    func perform() async throws -> some IntentResult & ProvidesDialog {
        try await WorkoutService.shared.start(type: workoutType)
        return .result(dialog: "Тренировка \(workoutType.name) началась")
    }
}

struct StartWorkoutIntent: AppIntent { static var title: LocalizedStringResource = "Начать тренировку" static var description = IntentDescription( "Запускает тренировку в приложении", categoryName: "Тренировки" ) static var openAppWhenRun: Bool = false // не открывать приложение @Parameter(title: "Тип тренировки") var workoutType: WorkoutType func perform() async throws -> some IntentResult & ProvidesDialog { try await WorkoutService.shared.start(type: workoutType) return .result(dialog: "Тренировка \(workoutType.name) началась") } } הוא המפתח לאוטומציות. האינטנט רץ ברקע מבלי לפתוח את האפליקציה. עבור Shortcuts זה קריטי—אחרת המסך מהבהב ופותח את ממשק המשתמש שלך.

מהם AppEntity ולמה הם נחוצים?

פרמטרים סטטיים (openAppWhenRun: Bool = false, String, Int, Bool) הם מאפיינים פשוטים עם Date. פרמטרים דינמיים משתמשים ב-@Parameter עם AppEntity.

enum WorkoutType: String, AppEnum {
    case running, cycling, swimming
    static var typeDisplayRepresentation = TypeDisplayRepresentation(name: "Тип тренировки")
    static var caseDisplayRepresentations: [WorkoutType: DisplayRepresentation] = [
        .running: "Бег",
        .cycling: "Велосипед",
        .swimming: "Плавание"
    ]
}

AppEntityQuery הוא רשימה סגורה. enum WorkoutType: String, AppEnum { case running, cycling, swimming static var typeDisplayRepresentation = TypeDisplayRepresentation(name: "Тип тренировки") static var caseDisplayRepresentations: [WorkoutType: DisplayRepresentation] = [ .running: "Бег", .cycling: "Велосипед", .swimming: "Плавание" ] } + AppEnum הוא רשימה דינמית ממסד הנתונים של האפליקציה שלך. אם משתמש מוסיף סוג אימון מותאם אישית, הוא חייב להופיע ב-Shortcuts כאופציה—אפשרי רק באמצעות AppEntity.

סוג פרמטר שימוש דוגמה
@Parameter סוגים בסיסיים String, Int, Bool, Date
AppEnum רשימה סגורה WorkoutType.running
AppEntity + Query רשימה דינמית Workout מ-CoreData

כיצד להעביר נתונים בין פעולות Shortcuts?

Shortcuts מאפשרים להעביר תוצאה של פעולה אחת לפעולה אחרת. האינטנט חייב להחזיר סוג קונקרטי, לא רק דיאלוג.

func perform() async throws -> some IntentResult & ReturnsValue<WorkoutSummary> {
    let summary = try await WorkoutService.shared.getLastSummary()
    return .result(value: summary)
}

AppEntityQuery הוא struct התואם ל-AppEntityQuery.entities(matching:) או סוג בסיסי. כעת הבלוק הבא של Shortcuts יכול לקבל נתונים אלה כפרמטר.

App Shortcuts: ביטויים ללא הגדרה

func perform() async throws -> some IntentResult & ReturnsValue<WorkoutSummary> { let summary = try await WorkoutService.shared.getLastSummary() return .result(value: summary) } מספק ביטויים שעובדים ללא הגדרה ידנית של המשתמש:

struct FitnessAppShortcuts: AppShortcutsProvider {
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: StartWorkoutIntent(),
            phrases: [
                "Начни тренировку в \(.applicationName)",
                "Запусти \(.applicationName)"
            ],
            shortTitle: "Начать тренировку",
            systemImageName: "figure.run"
        )
    }
    static var shortcutTileColor: ShortcutTileColor = .teal
}

הביטוי עם WorkoutSummary הוא חובה. אפל בודקת את שם האפליקציה בביטויים במהלך הבדיקה (סעיף 4.2 בהנחיות App Store Review). בלעדיו—דחייה.

כעת ניתן להשתמש בפרמטרים ישירות בביטויים: AppEntity—Siri מזהה את "running" כערך הפרמטר AppShortcutsProvider.

ווידג'טים ו-Shortcuts יחד

כפתורים בווידג'טים משתמשים באותו struct FitnessAppShortcuts: AppShortcutsProvider { static var appShortcuts: [AppShortcut] { AppShortcut( intent: StartWorkoutIntent(), phrases: [ "Начни тренировку в \(.applicationName)", "Запусти \(.applicationName)" ], shortTitle: "Начать тренировку", systemImageName: "figure.run" ) } static var shortcutTileColor: ShortcutTileColor = .teal } . אינטנט אחד עובד כפעולת Shortcuts, ככפתור ווידג'ט וכפקודה קולית. זה מפשט מאוד את הפיתוח: הלוגיקה נכתבת פעם אחת.

שלבי האינטגרציה

  1. ניתוח תרחישים: זיהוי הפעולות שמשתמשים רוצים להפוך לאוטומטיות.
  2. עיצוב מודל מבנה: יצירת AppIntent, AppEntity, AppEnum עבור כל פעולה.
  3. יישום perform(): כתיבת לוגיקת ביצוע עם תמיכה ברקע.
  4. הגדרת AppShortcutsProvider: תרגום ביטויים עבור Siri ו-Shortcuts.
  5. בדיקות: אימות על סימולטורים ומכשירים אמיתיים, כולל אוטומציות.
  6. פריסה: הגשת build ל-App Store Connect ובדיקה.

בדיקות

בסימולטור: Settings → Siri & Search → [אפליקציה] מציג אינטנטים רשומים. אפליקציית Shortcuts בסימולטור מאפשרת הוספת אינטנט לאוטומציה ידנית והרצתו.

עבור App Shortcuts: השתמש ב-\(.applicationName) עם "Начни бег в \(.applicationName)" או פשוט הרץ דרך Shortcuts.app ובדוק את התוצאה.

מה כלול

  • פיתוח אינטנטים המותאמים לתרחישים העסקיים שלך.
  • workoutType ו-AppIntent עבור נתונים דינמיים.
  • XCTest אינטגרציה עם ביטויים מתורגמים.
  • בדיקות על מכשירים אמיתיים וסימולטורים.
  • תיעוד לשימוש ותחזוקה.

לוחות זמנים ותמחור

אינטגרציה בסיסית (3–5 אינטנטים, ללא AppEntity): 2–4 שבועות. אינטגרציה מלאה עם AppEntity, App Shortcuts והעברת ערכים: 5–9 שבועות. הגירה מאינטנטים של SiriKit ל-App Intents: 3–6 שבועות. התמחור נקבע באופן אישי לפי מספר ומורכבות הפעולות. צור קשר להערכת פרויקט—נספק הצעת מחיר ולוח זמנים. קבל ייעוץ כדי ללמוד כיצד App Intents יכולים להפחית את עלויות פיתוח האוטומציה שלך.

מידע נוסף ניתן למצוא ב-תיעוד הרשמי של אפל.

חשוב: App Intents אינם דורשים הרשאות נוספות אלא אם נעשה שימוש בנתונים פרטיים—במקרה כזה, יש להגדיר App Tracking Transparency.