Intents Extension: кључни појмови и интеграција Siri Intents у iOS

Аутор: IT Sectr Објављено: 2026-06-16 Време читања: 9 мин

Intents Extension је iOS проширење које омогућава апликацијама трећих страна да обрађују гласовне команде Siri и да комуницирају са системским сервисима преко SiriKit-а. Апликација дефинише сопствене интенте у Intents.intentdefinition, имплементира руковаоце на основу INIntentHandler-а и региструје их за препознавање гласовних фраза. Према Apple Developer Documentation (2025), SiriKit подржава више од 20 домена интената — од порука и плаћања до тренинга и резервација, а од iOS 14 додата је подршка за прилагођене интенте путем IntentsExtension-а.

Главне тачке

  • Intents Extension обрађује гласовне команде Siri и системске интенте у име апликације у позадини
  • Итенти се дефинишу кроз датотеку Intents.intentdefinition са параметрима и одговорима у визуелном уређивачу Xcode-а
  • Главни протокол — INIntentHandler, који имплементира метод handle(intent:completion:) за обраду захтева
  • Прилагођени интенти (iOS 14+) омогућавају апликацији да креира сопствене типове команди без везивања за стандардне домене SiriKit-а
  • Проширење подржава INUIHostedViewProviding за приказ прилагођеног интерфејса унутар Siri пре извршења команде

Шта је Intents Extension у iOS-у

Intents Extension је проширење апликације које омогућава Siri, Shortcuts-у и другим системским сервисима да позивају функционалност апликације преко стандардизованог протокола INIntentHandler. Када корисник каже „Хеј Siri, пошаљи поруку у Месинџеру X”, Siri активира одговарајуће проширење, прослеђује параметре захтева и прима резултат за изговарање.

За разлику од других типова проширења, Intents Extension ради у позадини без видљивог интерфејса — Siri сама приказује одговор гласом или текстуалном картицом. Проширење може опционо да обезбеди прилагођени интерфејс путем INUIHostedViewProviding-а, који се приказује унутар Siri пре извршења команде ради потврде.

Проширење нема приступ екрану уређаја и не може самостално да покреће радње — само као одговор на захтев од Siri или Shortcuts-а. Ово обезбеђује сигурност: корисник увек контролише које радње апликација извршава путем гласовних команди.

SiriKit и домени интената

SiriKit је Apple-ов framework за интеграцију са Siri, представљен у iOS 10. Он дефинише домене — категорије радњи које Siri може да обрађује: поруке, телефонски позиви, плаћања, листе, подсетници, фотографије, тренинзи, резервације и друге. Сваки домен има фиксни скуп интената и одговора.

Стандардни домени

INSendMessageIntent — слање порука. INStartWorkoutIntent — почетак тренинга. INSearchForPhotosIntent — претрага фотографија. INRequestRideIntent — наручивање таксија. Сваки домен дефинише обавезне и опционе параметре које Siri извлачи из гласовног захтева. Према Apple-у, за стандардне домене није потребна датотека intentdefinition — довољно је имплементирати одговарајући handler.

За апликације које не спадају у стандардне домене, од iOS 14 појавила се могућност прилагођених интената. Апликација дефинише сопствене типове команди и њихове параметре путем Intents.intentdefinition-а, а Siri учи да препознаје одговарајуће фразе на основу примера које је обезбедио програмер.

Конфигурација у Info.plist

Intents Extension се региструје кроз кључ IntentsSupported у Info.plist-у, где се наводе све класе интената које проширење обрађује. Siri користи ову листу за избор одговарајућег проширења при препознавању гласовне команде. Ако више проширења подржава исти интент, Siri нуди кориснику избор.

swift
class MessageIntentHandler: NSObject,
    INSendMessageIntentHandling {

    func handle(
        intent: INSendMessageIntent,
        completion: @escaping
            (INSendMessageIntentResponse) -> Void
    ) {
        let response = INSendMessageIntentResponse(
            code: .success, userActivity: nil)
        completion(response)
    }
}

INIntentHandler: обрада захтева

INIntentHandler — протокол који дефинише методе за обраду сваке фазе рада интента: разрешавање параметара, потврда и извршење. Проширење имплементира ове методе за сваки тип интента који подржава.

Три фазе обраде

resolve — провера и прецизирање параметара интента. Siri позива овај метод за сваки параметар. Ако параметар није наведен или је нетачно наведен, проширење враћа захтев за прецизирањем, а Siri поставља кориснику додатно питање. confirm — потврда намере. Проширење проверава да ли може да изврши интент у тренутном контексту. handle — стварно извршење операције и враћање резултата.

Подела на три фазе је кључна за гласовни UX: ако параметар није препознат, Siri не извршава радњу, већ преиспитује. На пример, ако је корисник рекао „Пошаљи поруку Алексеју”, али у контактима постоје три Алексеја — проширење враћа resolve са захтевом за прецизирањем, а Siri пита „Ком Алексеју?”.

INIntentResponse и статуси

INIntentResponse — објекат који проширење враћа у completion након извршења интента. Response садржи код резултата (success, failure, requiresAuthentication, inProgress) и опционе податке за изговарање Siri. Код одређује како ће Siri реаговати: success — гласовна потврда, failure — порука о грешци, inProgress — индикација дуготрајне операције.

swift
func resolve(
    for intent: INSendMessageIntent,
    with completion: @escaping
        (INStringResolutionResult) -> Void
) {
    if let text = intent.content, !text.isEmpty {
        completion(.success(with: text))
    } else {
        completion(.needsValue())
    }
}

Креирање прилагођених интената

Од iOS 14, програмери су добили могућност да дефинишу сопствене интенте изван стандардних домена SiriKit-а. Прилагођени интенти се описују у датотеци Intents.intentdefinition — то је визуелни уређивач унутар Xcode-а где се креирају нови типови команди са параметрима и одговорима.

Структура прилагођеног интента

Сваки прилагођени интент се састоји од INIntent (дефиниција захтева) и INIntentResponse (дефиниција одговора). INIntent садржи параметре са типом података — String, Integer, CurrencyAmount, пронађене објекте и друге. INIntentResponse садржи својства за враћање резултата и низ кодова одговора. Xcode аутоматски генерише Swift класе на основу ове дефиниције.

Apple препоручује да прилагођени интент садржи не више од 5 параметара — прекомеран број погоршава препознавање гласа и компликује корисничко искуство. За сваки параметар пожељно је обезбедити примере фраза у Assistant Dialog-у како би Siri научила да их правилно препознаје.

Примери фраза за Siri

У Intents.intentdefinition-у за сваки интент могу се навести примери реченица — фразе које ће корисник изговорити Siri да би активирао интент. Примери: „Наручи кафу у МојојАпликацији”, „Замоли МојуАпликацију да пронађе рецепт за пицу”. Siri користи ове фразе за учење препознавања и нуди их кориснику при подешавању Shortcuts-а.

objective-c
// Intents.intentdefinition (визуелни уређивач)
Intent: OrderCoffeeIntent
Parameters:
  - beverage (String)
  - size (String)
  - quantity (Integer)
Response:
  - orderNumber (String)
  - price (CurrencyAmount)
Phrases:
  - "Order coffee in MyApp"
  - "Get a latte from MyApp"

Гласовна интеракција и INUIHostedViewProviding

INUIHostedViewProviding — протокол који омогућава Intents Extension-у да прикаже прилагођени интерфејс унутар Siri пре извршења команде. На пример, при наручивању таксија, проширење може да прикаже мапу са рутом и ценом, а корисник потврђује радњу додиром.

Конфигурација интерфејса

Протокол дефинише метод configure(with:for:completion:), где проширење прима интент и враћа UIViewController који ће бити уграђен у Siri. Величина контролера је ограничена — максимална висина 200 тачака. Препоручује се коришћење компактних картица са кључним информацијама: износ, време, адреса.

Прилагођени интерфејс је опциони — ако проширење не имплементира INUIHostedViewProviding, Siri приказује стандардну картицу са типом интента и апликацијом. За већину интената стандардни UI је довољан, а Apple препоручује додавање прилагођеног интерфејса само када заиста побољшава разумевање — на пример, за приказ руте или потврду плаћања.

Сигурност и потврда

За интенте повезане са финансијама или личним подацима потребна је аутентификација. INIntentResponse подржава код requiresAuthentication, који приморава Siri да затражи Face ID или Touch ID пре извршења. Након аутентификације, проширење добија потврду кроз засебан позив handle-а, где се проверава статус аутентификације.

Apple посебно наглашава: Intents Extension не треба да захтева сопствену лозинку или биометрију — користи се системска аутентификација. Чување токена приступа у Keychain-у са заједничким приступом између апликације и проширења је стандардна пракса за дуготрајне сесије.

swift
class IntentViewController: UIViewController {

    func configure(
        with intent: INIntent,
        completion: @escaping
            (UIViewController?) -> Void
    ) {
        let cardView = ConfirmationCardView()
        let hostingController =
            UIHostingController(rootView: cardView)
        completion(hostingController)
    }
}

Често постављана питања

Могу ли да користим Intents Extension без Siri?

Да, проширење може да обрађује интенте из апликације Shortcuts без гласовног уноса. Корисник креира пречицу од предложених радњи, а проширење је извршава без учешћа Siri.

Које верзије iOS-а подржавају прилагођене интенте?

Прилагођени интенти су доступни од iOS 14 и новијих. За iOS 10–13 доступни су само стандардни домени SiriKit-а. Прилагођени интенти захтевају Intents.intentdefinition и генерисање Swift класа.

Колико времена је дато за обраду интента?

Siri очекује одговор од проширења око 15 секунди. При прекорачењу лимита, Siri обавештава корисника да радња није успела. За дуготрајне операције користите код одговора inProgress.

Како пренети токен ауторизације у Intents Extension?

Користите Keychain са заједничким приступом путем access group-а између главне апликације и проширења. App Group shared UserDefaults је алтернатива, али је инфериорна у односу на Keychain у погледу сигурности.

Која је разлика између Intents Extension и Intents UI Extension?

Intents Extension обрађује логику — resolve, confirm, handle. Intents UI Extension обезбеђује прилагођени интерфејс за приказ унутар Siri путем INUIHostedViewProviding-а. Оба могу да раде заједно.

Закључак

  • Intents Extension обрађује гласовне команде Siri и пречице Shortcuts-а кроз протокол INIntentHandler
  • SiriKit пружа више од 20 стандардних домена и подржава прилагођене интенте од iOS 14
  • Животни циклус интента укључује три фазе: resolve (прецизирање), confirm (потврда) и handle (извршење)
  • Прилагођени интенти се креирају у Intents.intentdefinition са параметрима, одговорима и примерима фраза за Siri
  • INUIHostedViewProviding омогућава приказ прилагођеног интерфејса за потврду унутар Siri пре извршења
  • За финансијске и приватне радње користи се системска аутентификација путем Face ID или Touch ID

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође