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 та основний target додаються в один 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. Складні сценарії з кількома інтентами та фоновими завданнями можуть зайняти до тижня.
Гарантуємо якість та надаємо сертифікат завершення робіт. Замовте безкоштовну консультацію — напишіть нам. Зв'яжіться з нами для аудиту вашого проєкту. Отримайте оцінку вартості та термінів протягом одного робочого дня.







