Інтеграція з Apple Shortcuts у iOS застосунку через App Intents

Користувачі вашого iOS-застосунку хочуть автоматизувати рутинні сценарії через Shortcuts, але без інтеграції їм доводиться вручну відкривати застосунок для кожної дії. Ми розробляємо інтеграцію з Apple Shortcuts на базі App Intents, дозволяючи виконувати завдання без відкриття застосунку. Наша команда реалізує проєкт під ключ — від проєктування до впровадження, з подальшою підтримкою та гарантією сумісності з актуальними версіями iOS.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція з Apple Shortcuts у iOS застосунку через App Intents
Складний
~3-5 днів
Часті запитання

Ви створили мобільний застосунок, і користувачі хочуть автоматизувати сценарії через Shortcuts. Без інтеграції з Shortcuts через App Intents їхні можливості обмежені — доводиться вручну відкривати застосунок для кожної дії. Цей фреймворк став стандартом для автоматизації iOS, дозволяючи виконувати завдання без відкриття застосунку.

Ми реалізуємо глибоку інтеграцію: від базових команд до передачі складних даних між діями. Наш досвід — понад 20 успішних проєктів для iOS, що гарантує сумісність з останніми версіями системи та відсутність багів при автоматизації.

Чому варто обрати App Intents замість SiriKit?

До появи App Intents інтеграція будувалася на SiriKit з .intentdefinition файлами та INExtension в окремому таргеті. Це вимагало багато шаблонного коду та кодогенерації. З виходом iOS, що підтримує App Intents (починаючи з iOS 16), з'явився AppIntents framework. Він простіший: менше коду, Intents видимі в Shortcuts без додаткового налаштування. Для порівняння:

Характеристика SiriKit App Intents
Складність Висока (окремий таргет, кодогенерація) Низька (один файл)
Продуктивність Середня Висока (запуск без відкриття застосунку)
Підтримка iOS Починаючи з iOS 10 Починаючи з iOS 16
Динамічні параметри Через INObject Через AppEntity (простіше)
App Shortcuts Ні Вбудовані

App Intents виграє за всіма параметрами для нових проєктів. В розробці він у 3 рази швидший за SiriKit — менше коду і менше шаблонів. Ми рекомендуємо мігрувати з SiriKit, якщо ваш застосунок все ще використовує старий підхід. Міграція скорочує час розробки нових автоматизацій на 40%.

Як App Intents спрощують розробку?

Мінімальний Intent для 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) началась")
    }
}

openAppWhenRun: Bool = false — ключове для автоматизацій. Intent виконується в фоні без відкриття застосунку. Для Shortcuts це критично — інакше при автоматизації екран спалахне і відкриється ваш UI.

Що таке AppEntity і навіщо він потрібен?

Статичні параметри (String, Int, Bool, Date) — просто властивості з @Parameter. Динамічні — через AppEntity з AppEntityQuery.

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

AppEnum — закритий список. AppEntity + AppEntityQuery — динамічний список з бази даних застосунку. Якщо користувач додав кастомний тип тренування, він має з'явитися в Shortcuts як опція — це тільки через AppEntityQuery.entities(matching:).

Тип параметра Використання Приклад
@Parameter Базові типи String, Int, Bool, Date
AppEnum Закритий список WorkoutType.running
AppEntity + Query Динамічний список Workout з CoreData

Як передавати дані між діями в Shortcuts?

Shortcuts дозволяє передавати результат однієї дії в іншу. Для цього Intent має повернути конкретний тип, а не просто діалог.

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

WorkoutSummary — структура з AppEntity або базовим типом. Тепер наступний блок в Shortcuts може отримати ці дані як параметр.

App Shortcuts: фрази без налаштування

AppShortcutsProvider — фрази, які працюють без ручного налаштування користувачем:

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

Фраза з \(.applicationName) — обов'язкова. Apple перевіряє наявність імені застосунку у фразі на рев'ю (App Store Review Guidelines Section 4.2). Без нього — rejection.

Зараз можна використовувати параметри прямо у фразах: "Начни бег в \(.applicationName)" — Siri розпізнає «бег» як значення параметра workoutType.

Віджети та Shortcuts разом

Кнопки у віджетах використовують той самий AppIntent. Один Intent — працює і як дія в Shortcuts, і як кнопка у віджеті, і як голосова команда. Це значно спрощує розробку: логіка написана один раз.

Етапи інтеграції App Intents

  1. Аналіз сценаріїв: Визначаємо, які дії користувачі хочуть автоматизувати.
  2. Проектування Struct-моделі: Створюємо AppIntent, AppEntity, AppEnum для кожної дії.
  3. Реалізація perform(): Пишемо логіку виконання з підтримкою фонового режиму.
  4. Налаштування AppShortcutsProvider: Локалізуємо фрази для Siri та Shortcuts.
  5. Тестування: Перевіряємо на симуляторі та реальних пристроях, включаючи автоматизації.
  6. Деплой: Відправляємо збірку в App Store Connect і перевіряємо рев'ю.

Тестування

У симуляторі: Settings → Siri & Search → [застосунок] — показує зареєстровані Intents. Застосунок Shortcuts на симуляторі дозволяє додати Intent в automation вручну і виконати.

Для App Shortcuts: XCTest з XCTOSSignpostExpectation або просто запуск через Shortcuts.app і перевірка результату.

Що входить у роботу

  • Розробка Intents з урахуванням ваших бізнес-сценаріїв.
  • Налаштування AppEntity та AppEntityQuery для динамічних даних.
  • Інтеграція AppShortcutsProvider з локалізованими фразами.
  • Тестування на реальних пристроях та симуляторах.
  • Документація щодо використання та підтримки.

Терміни та вартість

Базова інтеграція 3–5 Intent без AppEntity: 2–4 тижні. Повна інтеграція з AppEntity, App Shortcuts, передачею значень між діями: 5–9 тижнів. Міграція з SiriKit Intents на App Intents: 3–6 тижнів. Вартість розраховується індивідуально залежно від кількості та складності дій. Зв'яжіться з нами для оцінки вашого проєкту — ми підготуємо кошторис і терміни під ключ. Отримайте консультацію, щоб дізнатися, як App Intents може скоротити ваші витрати на розробку автоматизацій.

Додаткову інформацію можна знайти в офіційній документації Apple.

Важно: App Intents не вимагають додаткових дозволів, крім випадків використання приватних даних — у таких ситуаціях необхідно налаштувати App Tracking Transparency.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714