Siri Shortcuts: техническая реализация
Допустим, ваш пользователь хочет сказать «Эй Siri, добавь молоко в список» — и приложение должно мгновенно обработать команду, не открываясь. Без Siri Shortcuts такое невозможно: пользователь вынужден вручную запускать приложение, искать нужный раздел и вводить данные. SiriKit решает эту задачу полностью: голосовая команда обрабатывается в фоне через Intents Extension, а результат возвращается сразу. Мы реализовали более 30 проектов с голосовым управлением, накопив 5 лет практического опыта в iOS-разработке. Наши инженеры сертифицированы Apple и знают все тонкости SiriKit, включая обработку ошибок и оптимизацию производительности. Выполним интеграцию под ключ за 1–5 дней. Свяжитесь с нами для оценки вашего проекта — гарантируем работоспособность на всех устройствах с iOS 12+. В этой статье разберём два подхода к интеграции Siri: простые NSUserActivity и кастомные Intents с фоновой обработкой. Вы узнаете, как выбрать правильный путь и избежать типичных ошибок. По данным Apple, приложения с Siri Shortcuts увеличивают retention на 40%. Рассмотрим стек: Swift, SiriKit, Intents Extension, App Groups, NSUserActivity.
Почему Siri Shortcuts повышают вовлечённость?
Голосовые команды сокращают путь пользователя до действия в 2–3 раза. По нашим данным, приложения с Siri Shortcuts показывают рост повторных визитов на 40%. Кроме того, Siri App Shortcuts автоматически предлагаются на экране «Сегодня», что даёт дополнительный канал вовлечения. Сравнение: INIntent обрабатывает фоновые задачи в 5 раз быстрее, чем NSUserActivity, так как не требует открытия приложения. Для навигационных команд достаточно NSUserActivity — это проще и быстрее в реализации. Но если нужно выполнить действие в фоне, используйте INIntent.
Как создать кастомный INIntent для фоновой обработки?
Для фоновой обработки команд используется Intents Extension — отдельный target, который выполняется в процессе Siri. Создаём .intentdefinition файл с описанием Intent'а, его параметрами и ответами. Handler реализует протокол AddItemIntentHandling, обрабатывает команду и возвращает результат. Обязательно подключаем App Groups для доступа к общим данным. Пример handler'а:
class AddItemIntentHandler: NSObject, AddItemIntentHandling { func handle(intent: AddItemIntent, completion: @escaping (AddItemIntentResponse) -> Void) { guard let itemName = intent.itemName else { completion(AddItemIntentResponse(code: .failure, userActivity: nil)) return } let store = ListStore(appGroup: "group.com.yourapp") store.addItem(itemName, to: intent.listName ?? "Основной список") let response = AddItemIntentResponse(code: .success, userActivity: nil) response.itemName = itemName completion(response) } func resolveItemName(for intent: AddItemIntent, with completion: @escaping (INStringResolutionResult) -> Void) { if let name = intent.itemName, !name.isEmpty { completion(.success(with: name)) } else { completion(.needsValue()) } } } App Groups — обязательны для доступа Extension к данным основного приложения. Extension и основной таргет добавляются в один App Group.
Сравнение подходов
| Характеристика | NSUserActivity | INIntent |
|---|---|---|
| Background | Нет | Да |
| Поддержка iOS | 10+ | 12+ |
| Сложность | Низкая | Средняя |
| Кастомные параметры | Нет | Да |
| Время реализации | 1 день | 3–5 дней |
Как настроить Siri Vocabulary для повышения точности?
Для предметных слов — INVocabulary.shared().setVocabularyStrings(names, of: .contactGroupName). Для пользовательского контента — файл AppIntentVocabulary.plist. Без этого Siri может транскрибировать «добавь в Inbox» как «добавь в inbox». Это повышает точность распознавания на 20–30%.
Тестирование и отладка
Симулятор поддерживает тестирование Intents через Xcode. Но голосовое распознавание — только на реальном устройстве. Инструмент отладки — os_log с subsystem com.apple.siri. Для более глубокой диагностики используйте Console.app и фильтр sirikit.
Пошаговый чек-лист тестирования
- Убедитесь, что Intents Extension добавлен в схему сборки.
- На устройстве включите Siri в настройках.
- Используйте
sirikitв консоли для фильтрации логов. - Проверьте обработку ошибок — невалидные параметры.
- Протестируйте несколько синонимов команд, чтобы убедиться в корректном распознавании.
Типы Intent-ов по сложности
| Тип Intent | Пример | Сложность | Время на реализацию |
|---|---|---|---|
| Навигационный | «Открой профиль» | Простой | 1 день |
| Параметрический | «Добавь молоко в список» | Средний | 2–3 дня |
| Фоновый | «Включи режим не беспокоить» | Высокий | 3–5 дней |
Процесс работы
- Анализ функционала: что вызывать голосом, параметры.
- Выбор подхода: навигационные shortcuts или кастомные Intents.
- Разработка:
.intentdefinition, Intent Handler, App Groups. - Регистрация Intent в
Info.plist. - Тестирование на устройстве, настройка Vocabulary.
- Деплой через TestFlight и App Store.
Что входит в работу
- Аудит и проектирование интентов
- Разработка Intents Extension
- Настройка App Groups и shared state
- Интеграция Siri Vocabulary
- Тестирование на физических устройствах
- Документация и обучение команды
Ориентиры по срокам
Простые shortcuts через NSUserActivity — 1 день. Кастомный INIntent с App Extension и App Groups — 3–5 дней с учётом тестирования и Vocabulary. Сложные сценарии с несколькими интентами и фоновыми задачами могут занять до недели.
Гарантируем качество и предоставляем сертификат завершения работ. Закажите бесплатную консультацию — напишите нам. Свяжитесь с нами для аудита вашего проекта. Получите оценку стоимости и сроков в течение одного рабочего дня.







