2026년 9월 14일 기준, iOS 27은 가을 정식 출시 구간에 들어가 있습니다. 이른바 「iOS 27 AI App」은 클라우드 채팅창을 한 장 씌운 제품이 아닙니다. Apple이 개발자에게 제시한 본선은 두 갈래입니다. Foundation Models로 App 안에서 생성·계획·도구 호출을 하고, 같은 능력을 App Intents로 Siri AI, Spotlight, 단축어에 넘깁니다. 폐루프를 먼저 정하고, 모델은 나중에 고르세요——온디바이스, Private Cloud Compute, 서드파티 LLM은 같은 Swift API를 타지만 App Store 심사, 개인정보 문구, 지역·언어 가용성은 전혀 다른 표입니다.
먼저 맞추기: iOS 27 AI App이 실제로 하는 일
많은 팀은 아직도 「AI 기능」을 입력창을 하나 더하고, 사용자 문장을 OpenAI나 Gemini로 넘긴 뒤 답을 화면에 붙이는 일로 봅니다. iOS 27에서도 그 경로는 컴파일됩니다. 다만 Apple이 이번 가을에 넘기는 형태는 더 이상 그것이 아닙니다. WWDC 2026 개발자 서사는 분명했습니다. 시스템 모델, Siri AI, 서드파티 모델은 모두 Foundation Models 통합 세션으로 App에 들어옵니다. 잠금 화면, Siri, 화면 위 콘텐츠에서 시작하는 동작은 App Intents를 탑니다. 남은 SiriKit 확장과 이중으로 유지보수하는 시대가 아닙니다.
제품 언어로 말하면 Foundation Models는 「생각하는 쪽」입니다. 자연어를 타입이 있는 초안으로 바꾸고, 여러분의 Tool을 호출하며, 온디바이스와 클라우드 모델을 갈아탑니다. App Intents는 「실행하는 쪽」입니다. 할 일을 만들고, 엔티티를 열고, 레코드를 고치며, Siri AI가 화면을 가리켜 「세 번째」라고 말할 수 있게 합니다. 채팅 UI는 피부 중 하나일 뿐입니다. 채팅만 있으면 Siri에게 안 보입니다. Intent만 있으면 App 안 계획·요약·여러 턴 수정이 바로 취약해집니다. 한국의 할 일 / 가계부 / 업무용 App도 이 두 축은 같습니다.
여기가 이 사이트의 소비자용 글과 갈라지는 지점입니다. 기능 목록과 요금 층은 Apple Intelligence 무료와 유료를 보세요. Mac에서 Siri가 할 수 있는 범위는 macOS 27 Siri AI입니다. 아래는 개발 절차만 적습니다. Xcode 타깃이 빈 상태에서, 데모하고 테스트하고 App Store 한국에 제출할 수 있는 폐루프까지입니다.
착수 전: Xcode 27, 기기 계층, 지역과 언어
첫 import FoundationModels를 쓰기 전에 툴체인을 고정하세요. iOS 27 SDK는 Xcode 27과 함께 배포됩니다. 시뮬레이터는 세션 뼈대를 통과시키기엔 충분합니다. 반면 Private Cloud Compute, 실기기 Tool 호출 횟수, 음성 경로는 실기기·지역과 자주 어긋납니다. Apple은 iOS 27 릴리스 노트에서 시뮬레이터 PCC 공백과, 온디바이스에서 「Tool + 가이드 생성」을 섞을 때 과도한 호출을 이미 적어 두었습니다. 일정에 버퍼를 남겨야 하는 항목이지, 각주가 아닙니다.
AI 기능을 「iOS 27이 설치되는 기기」로 계획하지 마세요. iPhone 11 이후는 OS 자체는 올라갑니다. Apple Intelligence와 온디바이스 Foundation Models는 여전히 iPhone 15 Pro / iPhone 16부터입니다. 더 무거운 온디바이스 스택(흔히 AFM 3 Core Advanced. 표현력 있는 음성과 고정밀 받아쓰기에 영향)은 주로 iPhone 17 Pro / Air 급입니다. iPad는 대략 M1부터 Apple Intelligence, 새 온디바이스 모델은 메모리가 더 큰 M 시리즈입니다. 요구사항 표는 「최소 iOS 27」 한 칸이 아니라 세 줄로 쓰세요.
| 등급 | 대표 기기 | 개발에서 약속할 수 있는 것 |
|---|---|---|
| OS만, Apple Intelligence 없음 | iPhone 11–15(비 Pro) | AI를 주 경로로 두지 말 것. 폴백 문구 또는 자체 클라우드 |
| 표준 Apple Intelligence | iPhone 15 Pro, iPhone 16 계열 | 온디바이스 세션, 기본 Siri AI, 대부분의 App Intents |
| 풀 온디바이스 모델 | iPhone 17 Pro / Air 급 | 고급 음성과 더 무거운 로컬 추론은 샘플 검증. 전 사용자 도달로 쓰지 말 것 |
두 번째 게이트는 지역과 언어입니다. Siri AI와 일부 시스템 기능은 Apple ID 지역, 시스템 언어, 규제 진행에 막힐 수 있습니다. 중국 본토와 EU(DMA 이후 제약)가 잘 알려진 예이지만, App Store 한국도 방심하면 안 됩니다. 글쓰기 도구 등 기존 Apple Intelligence는 한국어가 열려 있는 반면, 새 Siri AI와 Foundation Models 일부 세션은 지원 언어표가 영어 선행으로 남는 경우가 있습니다. 한국 팀의 정석은 업무 폐루프를 자체 모델이나 이미 심사를 통과한 클라우드에 두고, App Intents와 Foundation Models 세션은 켜고 끌 수 있는 모듈로 짜 두는 것입니다. 시스템 경로가 한국어로 열리면 라우트를 더합니다. App Store 한국 프리뷰에 「한국어 Siri AI로 전부 된다」고 쓰고, 촬영만 미국 계정·영어 로케일로 하면 심사에서 지적받습니다. 스크린샷 언어, 실기기 언어, 설명 언어를 맞추세요.
빌드 머신도 나눕니다. Xcode 27과 App Store 제출용 안정판을 일상 노트북 한 대에 얹지 마세요. beta와 GM이 같이 도는 가을에는 회귀기와 실험기를 물리적으로 나누면, 「어제까지 됐는데 오늘 인증서와 시뮬레이터가 경로를 빼앗는다」 사고가 절반으로 줄어듭니다. 분리 패턴은 Xcode beta와 정식 Runner 분리와 같습니다.
Foundation Models: API는 하나, 실행 위치는 셋
Foundation Models는 iOS 26에 들어왔고, iOS 27에서 네이티브 Swift 단일 API로 넓어졌습니다. 온디바이스 모델은 이미지 입력을 받고, 세션은 서버 모델을 가리킬 수 있으며, 커스텀 Skills도 붙입니다. 공식 정리는 Apple Newsroom(2026년 6월)입니다. 엔지니어링에서 진짜 선택은 「AI를 켤지」가 아니라 이번 추론을 어디서 돌릴지입니다.
| 실행 위치 | 대표 타입 | 잘 맞는 일 | 쓰면 안 되는 일 |
|---|---|---|---|
| 온디바이스 | SystemLanguageModel | 요약, 다시 쓰기, 폼 추출, 짧은 계획, 오프라인 초안 | 초장문, 실시간 검색이 필요한 개방형 Q&A |
| Apple 클라우드 | Private Cloud Compute 모델 | 더 무거운 추론. 서버 모델은 필요하지만 키는 직접 관리하고 싶지 않을 때 | 자체 VPC에서 100% 감사해야 하는 데이터 |
| 서드파티 / 자체 | LanguageModel + LanguageModelExecutor | Claude, Gemini, 자체 MLX / Core AI | 클라이언트 이니셜라이저에 API 키 하드코딩 |
iOS 27에서 중요한 변화는 모델을 바꿔도 세션 작성법을 다시 쓰지 않는 것입니다. 제공자는 공개 프로토콜을 구현합니다. WWDC26 세션 Bring an LLM provider to the Foundation Models framework는 Swift Package로 배포하고, Executor가 Transcript를 자체 메시지 형식으로 옮기며 prewarm, 스트리밍, KV cache를 다루라고 요구합니다. App 쪽은 여전히 LanguageModelSession입니다.
비용에도 새 레버가 있습니다. App Store Small Business Program에 들어가 있고 누적 최초 다운로드가 200만 미만인 개발자는, Private Cloud Compute 위 차세대 Apple Foundation Models를 쓸 때 클라우드 API 요금이 면제될 수 있습니다(해당 시점 약관을 확인). 무한 무료 추론이 아니라 「Apple 서버 모델을 한 번 써 볼」 문턱을 낮춘 제도입니다. 한도를 넘거나 Claude / Gemini가 필요하면 제공자 청구서를 따릅니다. 한국 인디·중소 팀도 온디바이스와 PCC 면제 조건을 먼저 보고, 외부 LLM 계약을 더하는 순서가 안전합니다.
1단계: LanguageModelSession과 구조화 출력
세션이 척추입니다. 문서는 LanguageModelSession. 객체 하나가 Transcript 한 부를 갖고, 창을 넘으면 LanguageModelError.contextSizeExceeded가 던져집니다. 보낼 때마다 new 하지 마세요. 무한 append도 하지 마세요. 계획은 짧은 세션, 확정은 새 세션이 「만능 세션 하나로 끝까지」보다 안정적입니다.
import FoundationModels
@Generable
struct TaskDraft {
@Guide(description: "20자 이내의 할 일 제목")
var title: String
@Guide(description: "ISO-8601 마감일. 사용자가 말하지 않으면 none")
var dueISO8601: String
var priority: Priority
}
@Generable
enum Priority {
case low, normal, high
}
let session = LanguageModelSession {
"""
당신은 할 일 App 안의 계획 도우미입니다.
TaskDraft만 출력하세요. 사용자가 언급하지 않은 캘린더 일정은 만들지 마세요.
"""
}
let response = try await session.respond(
generating: TaskDraft.self,
to: Prompt("내일 오후 3시까지 주간 보고 제출, 우선순위 높음")
)
let draft = response.content
여기서 이기는 것은 문법이 아니라 타입입니다. @Generable은 「잡담하는 모델」을 「폼을 채우는 모델」로 바꿉니다. SwiftData에 넣고, App Intent에 넘기고, 다음 계획 턴에 먹이는 것은 모두 값이지, 다시 파싱할 Markdown이 아닙니다. 릴리스 노트는 @Generable을 enum에 붙이면 안 사라지는 GenerationError 경고가 날 수 있다고도 합니다. 스토어를 의심하기 전에 노트를 보세요.
이미지 입력은 영수증 파싱, 매대 SKU, 화면 안 물체용입니다. 사진 보관함 전체를 컨텍스트에 넣지 마세요. 창이 차면 지금 사용자 한 마디가 아니라 오래된 Tool 응답과 지난 턴부터 자릅니다. 한국어 날짜(「다음 주 금요일」「월급날」)는 ISO-8601로 내리는 가이드를 두껍게 쓰세요. 애매한 채로 Intent에 넘기면 심사 녹화에서도 캘린더 오기록이 재현됩니다.
2단계: Tool, Skills, Dynamic Profiles
구조화 출력만으로는 부족합니다. 모델은 여러분의 도메인에 손을 뻗어야 합니다. Foundation Models Tool은 자동으로 App Intent가 되지 않습니다. Tool은 세션용, Intent는 시스템용입니다. Store는 공유하세요. 「Intent를 냈으니 모델이 본다」고 가정하지 마세요.
iOS 27은 다단계 Agent를 위해 Dynamic Profiles를 넣었습니다. WWDC26 세션 Build agentic app experiences는 브레인스토밍 / 계획 / 리뷰를 같은 세션에서 바꾸는 예입니다. profile은 모델, temperature, 추론 깊이를 바꿀 수 있습니다. 계획은 PCC + 더 깊은 reasoning, 리뷰는 온디바이스로 돌아와 지연과 비용을 막는 식입니다. profile 본문은 프롬프트마다 다시 계산되므로 무거운 I/O를 넣지 마세요.
enum PlanPhase { case brainstorm, plan, review }
func makeProfile(_ phase: PlanPhase) -> LanguageModelSession.DynamicProfile {
LanguageModelSession.DynamicProfile {
switch phase {
case .brainstorm, .plan:
return .init(model: .privateCloudCompute, tools: [SearchNotesTool(), ListCalendarTool()])
case .review:
return .init(model: SystemLanguageModel.default, tools: [ValidateDraftTool()])
}
}
}
성능에서 빠지기 쉬운 구멍은 두 개입니다. 이력을 다시 쓰면 KV cache가 깨지고 지연이 튑니다. append할 수 있으면 Transcript를 재작성하지 마세요. 온디바이스 모델은 가이드 생성과 Tool을 섞으면 연속 호출하기 쉽습니다. 횟수 상한과 「같은 Tool이 연속 실패하면 멈춤」을 넣으세요. Foundation Models Instrument와 평가 프레임워크가 있으니, 키노트형 데모 한 개가 아니라 현장 말투 20–30개를 회귀에 넣은 뒤 GA로 보세요. 한국어의 「이거」「아까 그거」는 화면 인식과 Tool 읽기가 안 맞으면 바로 무너집니다.
Skills(커스텀 스킬)는 사내 말투, 금칙어, 도메인 사전을 prompt 문자열에서 빼는 자리입니다. 운영이 고치기 쉽고 지역 스위치도 걸기 좋습니다. 두 번째 백엔드가 아닙니다. 세션 경계 안에 머물고, 권한과 로그는 Tool과 같은 감사에 올립니다. 한국어와 영어 스토어프론트를 같이 내면 Skills를 로케일 단위로 나누고, 금칙어 목록이 심사 설명과 모순되지 않게 하세요.
3단계: App Intents를 Siri AI에 넘기기
App Intents는 「단축어 부가 기능」이 아닙니다. iOS 27에서 Siri가 서드파티 App에 들어가는, 지원되는 유일한 정문입니다. SiriKit은 WWDC 2026에서 deprecated가 됐고, 대략 2–3년 호환 창이 남는다는 관측이 많습니다. 살아 있는 구 Intent Extension 이전이 채팅 문구 다듬기보다 앞입니다. 프로토콜과 파라미터 해석은 AppIntent부터 보세요.
이 세대 Intents는 의도적으로 쓰세요. 열기·만들기·검색은 시스템 스키마에 맞추고, 예쁜 독자 제목으로 전부 시작하지 마세요. 화면 인식으로 Siri가 「이거」「세 번째」를 해석하게 하세요. 스트리밍·장시간 작업 결과, 여러 턴 파라미터 보완. Spotlight에 올릴 엔티티는 IndexedEntity. Visual Intelligence 이미지 검색은 SemanticContentDescriptor와 IntentValueQuery이지, LanguageModelSession에 밀어 넣는 일이 아닙니다. 한국어 단축어 갤러리에 나갈 title은 사용자가 소리 내 말하는 말에 맞추세요. 심사 담당과 갤러리가 그곳을 봅니다.
import AppIntents
struct CreateTaskIntent: AppIntent {
static var title: LocalizedStringResource = "할 일 만들기"
static var description = IntentDescription("할 일을 App에 저장합니다.")
@Parameter(title: "제목")
var title: String
@Parameter(title: "우선순위")
var priority: String?
func perform() async throws -> some IntentResult & ProvidesDialog {
try await TaskStore.shared.create(title: title, priority: priority ?? "normal")
return .result(dialog: "만들었습니다: \(title)")
}
}
사람용 문구와 기계 계약을 나누세요. title / description은 Siri와 단축어 갤러리용. perform()은 멱등이고 감사 가능한 쓰기만 합니다. 파괴적 동작은 명시 확인을 받습니다. 모델 세션이 조용히 호출하게 두지 마세요. 파라미터를 해석하지 못하면 시스템이 한 번 더 묻게 하는 편이, dialog에 모델 즉흥을 실어 데이터를 쓰는 것보다 안전합니다. App Store 심사는 「확인 없는 기록」과 「설명과 구현 불일치」를 자주 봅니다.
모델을 Intent에 연결: 심사에 올릴 수 있는 폐루프
여기서 두 선을 잇습니다. 기본 형은 모델은 초안만, 확정은 Intent입니다.
- 사용자가 App 안에서 말하거나 치고, 또는 Siri가 자연어 한 줄을 들고 옵니다.
LanguageModelSession이@Generable초안을 냅니다. 필요하면 먼저 Tool로 캘린더, 메모, 재고를 읽습니다.- UI가 초안을 보여 주고 사용자가 확인합니다. 저위험 형태만 자동 확인 임계값을 둡니다.
- 맞는
AppIntent를 만들어perform(). 같은 Store가 단축어와 Spotlight도 받습니다. - 실행 결과를 Transcript에 도구 출력으로 되돌려, 다음 수정이 콜드 스타트가 아니게 합니다.
func commit(_ draft: TaskDraft) async throws {
var intent = CreateTaskIntent()
intent.title = draft.title
intent.priority = String(describing: draft.priority)
_ = try await intent.perform()
}
왜 Tool이 행을 넣게 두지 않나요. App Review, 단축어 갤러리, Siri 제안, 자체 실행 취소 스택이 모두 Intent 경로를 이해합니다. 환각으로 마감일을 틀려도 UI에서 막으면 쌉니다. Tool이 이미 미리 알림 열 개를 조용히 만들었다면 고객 지원 비용이 한 자릿수 다릅니다. 한국 심사에서도 「AI가 제멋대로 캘린더에 썼다」 재현은 떨어지기 쉽습니다.
모델 전환은 profile / session 팩토리에 가두고 View에 흩뿌리지 마세요. 지역 스위치도 여기에 둡니다. 한국향 빌드는 온디바이스 + PCC를 우선하고, 중국 본토나 EU향은 심사된 서드파티 LanguageModel을 기본으로 두는 식입니다. Intent는 어느 쪽이든 CreateTaskIntent입니다. Siri로 들어와도 같은 입구입니다.
테스트, 개인정보, 제출 체크리스트
AI 기능은 평범한 CRUD보다 심사와 고객 지원에서 넘어지기 쉽습니다. GA로 올리기 전에 아래 표를 한 번은 도세요.
| 확인 항목 | 검증 방법 | 실패하면 GA 금지 |
|---|---|---|
| Intelligence 없는 기기 | iPhone 15 비 Pro, 또는 AI 끈 시뮬레이터 구성 | 주 경로 공백 / 크래시 |
| PCC 불가 | 시뮬레이터, 항공 모드, 미로그인 | 무한 스피너, 폴백 없음 |
| 지역 / 언어 | 한국·미국·중국 본토 Apple ID, EU 계정, 한국어만 시스템 | 문구는 시스템 Siri를 약속했는데 쓸 수 없음 |
| 환각 기록 | 모호한 지시 + 마감일 날조 유도 | 확인 없이 캘린더 / 결제에 기록 |
| Intent 이전 | 구 SiriKit 경로가 아직 컴파일됨 | 「나중에」 경고만 보고 미룸 |
| 비밀 | IPA에서 sk- / 제공자 키 검색 | 서드파티 키가 클라이언트에 들어 있음 |
개인정보 문구는 구현과 같아야 합니다. 온디바이스 추론은 「기본은 기기 밖으로 나가지 않음」이라고 쓸 수 있습니다. PCC나 서드파티로 나가면 설정 화면에 이름을 적으세요. 제공자 문서는 키체인(대개 App Attest도)을 요구합니다. 세션 이니셜라이저에 맨키를 넣지 마세요. 분석 백엔드에는 초안 schema와 Intent 식별자만 남기고, Transcript 전문을 기본 업로드하지 마세요. App Store 한국 심사 노트에 데이터 행선지를 한 줄로 적어 두면 반려가 줄어듭니다.
심사 자료는 세 가지입니다. 30초 「말하기 → 초안 → 확인 → 목록에 행이 생김」 화면 녹화. 시스템 언어와 스크린샷 스토어프론트를 맞춥니다. Intelligence 없는 기기 폴백 설명. 실행 위치 표(온디바이스 / PCC / 서드파티) 한 장. 마케팅 문구가 엔지니어링 역량보다 앞서지 않게, 소비자 쪽 경계는 WWDC 2026 Siri AI 가이드와 대조하세요.
개인 노트북이 Xcode 27, 실기기 매트릭스, 야간 회귀를 겸하면 편성 비용이 토큰보다 먼저 커집니다. 안정 빌드와 Agent 평가는 잠들지 않는 Apple Silicon 한 대에 두는 편이, 팀원마다 슬림 노트북을 교체하는 것보다 통제하기 쉽습니다.
클라우드 Mac mini에서 iOS 27 AI 폐루프를 안정적으로 돌리기
Foundation Models 세션, 시뮬레이터, 실기기 프록시, Xcode 27 툴체인은 메모리와 디스크를 먹고, 머신이 잠들지 않기를 요구합니다. Nuvcloud 클라우드 Mac mini는 전용 Apple Silicon 베어메탈입니다. 통합 메모리는 병렬 컴파일과 로컬 평가에 맞고, SSH는 항상 살아 있으며, iOS 27 SDK 전용기를 일 단위로 열 수 있습니다. 디자인 시안·회의 앱과 같은 뚜껑을 다투지 않습니다.
LanguageModelSession과 App Intents를 일간 회귀에 올리려 한다면 Nuvcloud 요금제와 노드를 확인하세요. 빌드기와 평가기를 24/7 온라인으로 두고, 「노트북을 닫으면 세션이 끊긴다」를 크리티컬 패스에서 빼세요.
더 읽기
자주 묻는 질문
Swift를 몰라도 iOS 27 AI App을 만들 수 있나?
시스템급 Foundation Models와 App Intents 주 경로는 Swift입니다. Flutter / React Native로 UI는 계속할 수 있지만 세션, Tool, Intent는 네이티브 모듈에 두세요. 그렇지 않으면 Siri AI와 온디바이스 모델은 거의 연결되지 않습니다.
Foundation Models와 ChatGPT API 직호출은 무엇이 다른가?
전자는 시스템 세션 API입니다. 온디바이스, PCC, 프로토콜로 붙인 서드파티를 고를 수 있고 Tool / 구조화 출력 / 시스템 개인정보 안내와 맞습니다. 후자는 자체 HTTPS입니다. 유연하지만 온디바이스 모델과 시스템급 Siri 배포는 못 받고, 키와 심사 위험은 직접 집니다.
App Intents가 자동으로 모델 Tool이 되나?
되지 않습니다. Intent는 Siri, 단축어, 시스템 제안용. Tool은 LanguageModelSession용입니다. 같은 Store를 호출하세요. 프레임워크 자동 브리지를 기다리지 마세요.
중국 본토에서 시스템 Foundation Models를 쓸 수 있나?
기기, 시스템 언어, Apple ID 지역에 달렸습니다. 본토 iPhone에서는 시스템 Apple Intelligence / Siri AI가 아직 안 열릴 수 있습니다. 시스템 모델은 스위치로 두고, 심사된 서드파티 LanguageModel을 준비해 주 경로가 비지 않게 하세요. 한국향 빌드와 본토향 빌드를 나누는 편이 안전합니다.
Private Cloud Compute는 필수인가?
필수가 아닙니다. 짧은 요약, 폼 추출, 로컬 초안은 온디바이스 우선. 품질이 부족하고 Apple PCC 경계를 받아들일 때만 올리세요. Small Business Program 조건을 충족하면 PCC 클라우드 API 요금이 면제될 수 있습니다. 해당 시점 약관을 다시 읽으세요.
SiriKit은 얼마나 더 쓸 수 있나?
WWDC 2026에서 deprecated. 업계는 보통 2–3년 호환 창으로 잡습니다. 새 기능에 SiriKit을 더하지 마세요. 잔존 경로는 iOS 27 이터레이션에 넣고, 컴파일 경고가 하드 에러가 되기 전에 옮기세요.
시뮬레이터만 통과하면 심사 제출해도 되나?
유일한 증거로 쓰면 안 됩니다. PCC, 일부 Tool 호출, 음성 경로는 시뮬레이터와 실기기가 다릅니다. 표준 Intelligence 실기기를 최소 한 대 두고, 풀 능력은 따로 샘플링하세요. 17 Pro 녹화를 전 사용자 대표로 쓰지 마세요. App Store 한국향이면 한국어 로케일 실기기에서 찍습니다.
Xcode 27 때문에 새 Mac을 사야 하나?
새 사무용 노트북이 필수는 아닙니다. 필요한 것은 iOS 27 SDK를 안정적으로 돌리고 잠들지 않는 Apple Silicon입니다. 많은 팀이 클라우드 Mac mini로 beta 빌드와 정식 CI를 나눠, 전 직원 기종 교체보다 싸게 끝냅니다.