반응형

iOS AppIntents 아키텍쳐: 온디바이스 AI 및 Siri에 앱 로직 연동하기 

Apple Intelligence 및 Siri와 같은 온디바이스 AI 시스템이 사용자의 의도를 파악하여 특정 애브이 기능을 직접 실행하려면, 앱 내부 로직을 시스템이 이해할 수 있는 형식으로 노출해야 합니다. 기존의 복잡한 SiriKit 자원 파일(Intent Definition) 대신 Swift 언어의 선언적 문법을 활용하는 AppIntents 프레임워크가 iOS 앱 연동의 표준 아키텍처로 자리 잡았습니다. 

 

1. 기존 SiriKit의 한계와 AppIntents 프레임워크의 도입 

기존 SiriKit은 별도의 .intentdefinition 파일 설정과 자동생성 코드에 의존하여 코드 유지 보수가 까다로웠습니다.

  • 선언적 Swift 코드 : AppIntents는 Swift 프로토콜 기반으로 동작하여 뷰 코드 및 도메인 로직과 동일한 코드 베이스 내에서 선언적으로 정의 됩니다.
  • Apple Intelligence 결합 :  단순 음성 명령을 넘어 온디바이스 AI 시스템이 앱 내부 엔티티(Entity)와 인텐트(Intent)를 인식하도록 지원합니다.

 

2. AppIntents 아키텍처 핵심 구성 요소

AppIntents 시스템은 3가지 기본 프로토콜로 구성됩니다.

  • AppIntent : 앱이 수행할 수 있는 작업 단위(동작)를 정의합니다. (예: "주문하기", "메모 작성하기")
  • AppEntity : 작업의 대상이 되는 앱 내부 데이터 모델을 다룹니다. (예: "상품", "노트 객체")
  • AppShortcutsProvider : Siri 및 단축어 앱에 자동으로 등록될 기본 음성 명령 패턴을 선언합니다.

 

3. AppIntent 구현 및 비즈니스 로직 연동 실무 예제

특정 동작을 수행하는 AppIntent를 Swift 코드로 구현하는 방식입니다.

import AppIntents

// 1. 시스템에 노출할 동작(Intent) 정의
struct CreateNoteIntent: AppIntent {
    // 시스템 Siri 및 단축어 앱에 표시될 제목
    static var title: LocalizedStringResource = "새 노트 작성"
    static var description = IntentDescription("지정된 제목으로 새 노트를 생성합니다.")

    // 사용자 또는 온디바이스 AI가 전달할 파라미터 정의
    @Parameter(title: "노트 제목")
    var noteTitle: String

    // Intent 실행 시 호출되는 핵심 로직
    @MainActor
    func perform() async throws -> some IntentResult & ReturnsValue<String> {
        // 앱 내부 도메인 서비스 호출
        let newNoteId = try await NoteService.shared.create(title: noteTitle)
        
        // 실행 결과 및 성공 메시지 반환
        return .result(value: "노트 '\(noteTitle)'이(가) 성공적으로 생성되었습니다.")
    }
}

// 2. Siri 자동 음성 명령 등록 프로토콜 정의
struct NoteAppShortcuts: AppShortcutsProvider {
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: CreateNoteIntent(),
            phrases: [
                "\(.applicationName)에서 \(\.$noteTitle) 작성해 줘",
                "\(.applicationName)에 새 노트 추가"
            ],
            shortTitle: "노트 작성",
            systemImageName: "square.and.pencil"
        )
    }
}

 

4. SiriKit vs AppIntents 비교 

구분 기존 SiriKit 방식 AppIntents 프레임워크 방식
설정 방식 .intentdefinition GUI 파일 매핑 Pure Swift 선언적 프로토콜 코드
AI 연동성 고정된 도메인 카테고리만 지원 Apple Intelligence 온디바이스 인지 연동
단축어 자동 등록 사용자가 수동 등록 필요 AppShortcutsProvider 로 자동 생성
유지보수성 생성된 코드와 실제 로직 분리로 복잡 도메인 서비스와 직접 바인딩 가능

 

5. 핵심 요약

AppIntents 아키택쳐를 도입하면 코드베이스의 이원화 없이 Swift 코드만으로 앱의 핵심 로직을 온디바이스 AI, Siri, 단축어 시스템에 안전하게 노출할수 있습니다.

반응형
Posted by 까칠코더
,