Разработка Siri Shortcuts интеграции для iOS-приложения

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Разработка Siri Shortcuts интеграции для iOS-приложения
Сложный
~3-5 дней
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Разработка Siri Shortcuts интеграции для iOS-приложения

Siri Shortcuts позволяет пользователям запускать действия вашего приложения голосом или через автоматизации в приложении Shortcuts. С iOS 16 и App Intents framework это стало значительно проще — и одновременно появились новые возможности, которые сломали старый NSUserActivity/Intent подход.

App Intents vs SiriKit Intents: что выбрать

До iOS 16 — SiriKit с .intentdefinition файлом, кодогенерацией и INExtension. Сложно, много шаблонного кода.

С iOS 16 — AppIntents framework. Структура, реализующая AppIntent, автоматически доступна Siri, Spotlight и приложению Shortcuts. Никаких extension targets, никакой кодогенерации.

struct OrderCoffeeIntent: AppIntent {
    static var title: LocalizedStringResource = "Заказать кофе"
    static var description = IntentDescription("Создаёт заказ в приложении")

    @Parameter(title: "Напиток", default: "Эспрессо")
    var drinkName: String

    func perform() async throws -> some IntentResult & ProvidesDialog {
        let order = try await CoffeeService.shared.placeOrder(drink: drinkName)
        return .result(dialog: "Заказ \(drinkName) принят, номер \(order.id)")
    }
}

Этот Intent сразу появляется в Siri, Spotlight и приложении Shortcuts. Без дополнительной регистрации.

Параметры и Entity

Если параметр — не простая строка, а сущность из вашего приложения (продукт, контакт, маршрут), нужен AppEntity. Он позволяет Siri запрашивать у пользователя уточнение через диалог.

struct CoffeeItem: AppEntity {
    static var typeDisplayRepresentation = TypeDisplayRepresentation(name: "Напиток")
    static var defaultQuery = CoffeeItemQuery()
    var id: String
    var displayRepresentation: DisplayRepresentation { .init(title: "\(name)") }
    var name: String
}

AppEntityQuery с методом entities(matching:) — позволяет Siri искать сущности по тексту. Пользователь говорит «Закажи большой капучино» — Siri запрашивает у приложения список капучино и предлагает выбрать.

Ошибки, которые ломают Siri интеграцию

perform() выбрасывает ошибку без обработки. Если perform() throws, Siri показывает дефолтное сообщение «Что-то пошло не так» без деталей. Правильно: бросать AppIntentError с кастомным сообщением или возвращать result(dialog:) с описанием ошибки.

Долгое выполнение без фидбека. perform() должен завершиться за разумное время (до 30 секунд). Для длительных операций — промежуточный диалог через requestConfirmation(). Без него Siri просто зависнет в ожидании с крутящимся индикатором.

Потеря авторизации в Extension. INExtension (старый подход) работает в отдельном процессе. Если авторизационный токен хранится в Keychain без kSecAttrAccessible: kSecAttrAccessibleAfterFirstUnlock, Extension не получит доступ когда телефон заблокирован. App Intents выполняются в процессе основного приложения — эта проблема менее острая, но Keychain access group всё равно нужно настраивать.

App Shortcuts (Siri Tips)

С iOS 16.4 можно определить AppShortcutsProvider — готовые фразы, которые сразу работают без настройки пользователем:

struct CoffeeAppShortcuts: AppShortcutsProvider {
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: OrderCoffeeIntent(),
            phrases: ["Закажи \(.applicationName)", "Хочу кофе в \(.applicationName)"],
            shortTitle: "Заказ кофе",
            systemImageName: "cup.and.saucer"
        )
    }
}

Фраза \(.applicationName) обязательна — без имени приложения в фразе Siri не сможет однозначно маршрутизировать команду. Apple проверяет это на ревью.

Тестирование

Simulator + Siri работает только с реального голоса или через XCTest с INUIAddVoiceShortcutButton. Лучше тестировать на реальном устройстве. Для App Intents: Settings → Siri & Search → [приложение] показывает зарегистрированные интенты.

Сроки

Базовая интеграция 2–3 App Intents без Entity: 2–4 недели. Полная интеграция с AppEntity, App Shortcuts, кастомными диалогами: 5–8 недель. Миграция со старого SiriKit на App Intents: 3–6 недель в зависимости от объёма. Стоимость рассчитывается после аудита существующей интеграции.