App Intents to nowe API Apple do Twojej aplikacji
Rankiem 8 lutego 2026 poprosiłem Siri, żeby zalogowała 8 uncji wody z mojego Apple Watch, podczas gdy moje ręce znajdowały się pod kuchennym zlewem. Woda została zalogowana. Dialog na zegarku pokazał pozostałe 32 uncje. Nie dotknąłem żadnego ekranu.1
Jedenaście tygodni wcześniej dodałem jeden plik Swift do aplikacji Water, mojej aplikacji iOS do śledzenia nawodnienia: LogWaterIntent.swift, 80 linii AppIntent plus AppShortcutsProvider deklarujący trzy warianty fraz dla Siri. Ten plik jest teraz najgorętszą powierzchnią API, jaką posiadam.2
Oto fragment, którego przyswojenie zajęło mi chwilę. App Intents nie są funkcją Siri. Są kontraktem, jaki aplikacje zewnętrzne podpisują z Apple Intelligence, czyli systemową warstwą AI, którą Apple zaczęło wdrażać w iOS 18 i rozwijało dalej aż do iOS 26.3 Jeśli wydaje się aplikację iOS i nadal traktuje się App Intents jako głosowy dodatek z kategorii „miło mieć”, to błędnie odczytuje się to, co zbudowało Apple. App Intents to API, które pozwala AI Apple działać jako Twoja aplikacja w imieniu użytkownika. Wszystko inne (Siri, Spotlight, Shortcuts, podsumowania Apple Intelligence, powierzchnie Watch i Vision Pro) wynika z tego kontraktu. Foundation Models, działający na urządzeniu LLM, który pojawił się w iOS 26, udostępnia osobny protokół Tool do wywoływania narzędzi wewnątrz aplikacji; działa on równolegle do App Intents, a nie poprzez nie.
TL;DR
- App Intents deklarują, co Twoja aplikacja potrafi zrobić, w typowany, ustrukturyzowany sposób, który AI Apple może wywołać bezpośrednio. To API Apple do użycia narzędzi przeznaczone dla aplikacji zewnętrznych.
- Jeden rzeczywisty przykład produkcyjny:
LogWaterIntentw aplikacji Water. 80 linii, pełny zapis SwiftData, synchronizacja z HealthKit, konwersja jednostek uwzględniająca ustawienia regionalne, ustrukturyzowana odpowiedź dialogowa Siri. - iOS 26 dodał Foundation Models, działający na urządzeniu LLM od Apple. Foundation Models udostępnia własny protokół
Tooldo użycia narzędzi wewnątrz aplikacji; App Intents pozostają kanoniczną powierzchnią, którą Siri / Spotlight / Apple Intelligence wywołują w różnych aplikacjach. Ten sam kierunek, dwa równoległe kontrakty. - Aplikacja bez App Intents w 2026 roku jest niewidoczna dla Apple Intelligence. Warstwa AI kieruje ruch przez Twoje zadeklarowane intenty albo kieruje go z pominięciem Twojej aplikacji, do konkurencji.
- Apple mówi nam o tym od trzech lat. Nazewnictwo (App Intents, App Shortcuts, Apple Intelligence) nie jest przypadkowe. Z każdym WWDC kontrakt wspina się o jeden poziom wyżej w stosie.

Obraz referencyjny frameworku App Intents z dokumentacji Apple Developer.5
Czym tak naprawdę jest App Intent
Pełny kod źródłowy LogWaterIntent w postaci, w jakiej został wydany w commicie e398c58 8 lutego 2026:2
import AppIntents
import SwiftData
struct LogWaterIntent: AppIntent {
static var title: LocalizedStringResource = "Log Water"
static var description: IntentDescription = "Log a glass of water to your daily intake"
@Parameter(title: "Amount", default: 8)
var amount: Int
static var parameterSummary: some ParameterSummary {
Summary("Log \(\.$amount) oz of water")
}
func perform() async throws -> some IntentResult & ProvidesDialog {
let container = try ModelContainer(for: WaterEntry.self, DailyLog.self, UserSettings.self)
let context = ModelContext(container)
let settingsDescriptor = FetchDescriptor<UserSettings>(
predicate: #Predicate { $0.id == "user-settings" }
)
let settings = try context.fetch(settingsDescriptor).first ?? UserSettings()
let amountMl: Double
if settings.unitSystem == .imperial {
amountMl = Double(amount) * 29.5735
} else {
amountMl = Double(amount)
}
let todayKey = DailyLog.todayKey()
let logDescriptor = FetchDescriptor<DailyLog>(
predicate: #Predicate { $0.dateKey == todayKey }
)
let log: DailyLog
if let existing = try context.fetch(logDescriptor).first {
log = existing
} else {
log = DailyLog(date: .now, goalAmount: settings.dailyGoal)
context.insert(log)
}
let entry = WaterEntry(amount: amountMl)
log.entries.append(entry)
try context.save()
if settings.healthKitEnabled {
try? await HealthKitService.shared.logWater(amount: amountMl, date: entry.timestamp)
}
let unit = settings.unitSystem == .imperial ? "oz" : "mL"
let totalDisplay = settings.formatAmount(log.totalAmount)
return .result(dialog: "Logged \(amount) \(unit). Today's total: \(totalDisplay)")
}
}
struct WaterShortcuts: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: LogWaterIntent(),
phrases: [
"Log water in \(.applicationName)",
"Add water in \(.applicationName)",
"Drink water in \(.applicationName)",
],
shortTitle: "Log Water",
systemImageName: "drop.fill"
)
}
}
(Obecna wersja produkcyjna tego pliku w aplikacji Water rozwija dialog dalej, dodając warunek osiągnięcia celu / pozostałej ilości. Kod wydany 8 lutego, przytoczony powyżej, to ten, który testowałem przy kuchennym zlewie.)
Trzy elementy zasługują tutaj na osobne nazwanie, bo większość „samouczków o App Intents” je pomija.
@Parameter jest schematem. AI Apple widzi amount: Int z wartością domyślną 8. Kiedy Siri analizuje „zaloguj 12 uncji wody”, tworzy LogWaterIntent(amount: 12) i wywołuje perform(). Po mojej stronie nie ma żadnego parsowania ciągów znaków. To system typów jest schematem.5
parameterSummary jest odbiciem parametru w języku naturalnym. Apple używa go do renderowania akcji w UI Shortcuts, w dialogu oraz coraz częściej w panelach potwierdzenia Apple Intelligence. Podsumowanie jest odczytywane użytkownikowi na głos. Jeśli się je popsuje, użytkownik usłyszy brzydkie zdanie; jeśli zrobi się to dobrze, powierzchnia sprawia wrażenie natywnej.6
perform() zwraca IntentResult & ProvidesDialog. To jest ustrukturyzowany wynik: powierzchnia AI otrzymuje z powrotem nie tylko informację o sukcesie/porażce, ale również ciąg dialogowy, który słyszy użytkownik. Apple coraz częściej oczekuje ProvidesDialog, ProvidesView lub ReturnsValue, aby wynik komponował się w Siri, Spotlight, na zegarku oraz (w iOS 26) w łańcuchu odpowiedzi Apple Intelligence.7
Blok AppShortcutsProvider na dole rejestruje frazy Siri. Token \(.applicationName) to miejsce, w którym Siri automatycznie wstawia „Water”. Trzy warianty fraz z tym samym intentem dają parserowi języka naturalnego Apple większe pole do dopasowania sformułowań użytkownika, bez konieczności utrzymywania własnego słownika fraz. systemImageName to prawdziwa nazwa z biblioteki SF Symbols; w ten sposób Spotlight, Shortcuts i Apple Intelligence renderują ikonę akcji.

Apple Intelligence kieruje żądania użytkownika przez App Intents, aby dostarczyć funkcje AI działające na urządzeniu. Źródło: apple.com/apple-intelligence.
Dlaczego to najważniejsze API iOS od czasów SwiftUI
API iOS mają dwa kształty. Niektóre dotyczą tego, jak Twoja aplikacja rysuje samą siebie (UIKit, SwiftUI, Metal). Inne dotyczą tego, jak Twoja aplikacja integruje się z systemem (schematy URL, Universal Links, widgety). App Intents to trzeci kształt: to sposób, w jaki AI Apple korzysta z Twojej aplikacji. Wspomniane powierzchnie widgetów i Control Center same w sobie są powierzchniami App Intents, czyli tym samym intentem renderowanym w wielu miejscach, co prześledziłem w Powierzchni widgetów iOS 26.
Warto prześledzić tę progresję.
- iOS 10 (2016) wprowadził SiriKit Intents (
INIntent), pierwszy raz, gdy do aplikacji zewnętrznych można było zwrócić się głosem. Powierzchnia była wąska: ustalona lista domen (wiadomości, płatności, zamawianie przejazdów) ze ścisłymi schematami.8 - iOS 12 (2018) poszerzył powierzchnię o Siri Shortcuts: każda aplikacja mogła przekazać
NSUserActivitylubINIntenti liczyć na to, że Siri ją zasugeruje. - iOS 13 (2019) dodał obsługę intentów wewnątrz aplikacji, dzięki czemu aplikacje mogły reagować na wywołania skrótów bez przechodzenia w tło do systemowego UI Siri.
- iOS 16 (2022) wprowadził framework App Intents: typowany, deklaratywny, z
@ParameteriAppShortcutsProvider. PoprzednikINIntentzostał w praktyce wyparty z nowych prac deweloperskich.9 - iOS 18 (2024) wprowadził Apple Intelligence i zaczął kierować żądania Siri przez App Intents wszędzie tam, gdzie było to możliwe. Funkcja „kontekstu osobistego” Apple Intelligence czyta z App Entities (wersji danych App Intents).10 iOS 27 idzie z tym dalej dzięki App Schemas, które pozwalają Siri rozumować nad Twoimi encjami i działać na nich w pojęciach, które już zna, bez żadnych fraz treningowych, opisanych tutaj.
- iOS 26 (2025) wprowadził framework Foundation Models, działający na urządzeniu LLM od Apple. Foundation Models udostępnia osobny protokół
Tooldo wywoływania narzędzi wewnątrz aplikacji. App Intents pozostają kanoniczną, międzyaplikacyjną powierzchnią dla Apple Intelligence, natomiastToolto powierzchnia wewnątrz aplikacji dla bezpośrednich wywołań LLM. Oba kontrakty działają równolegle.4
Z każdym wydaniem kontrakt rozszerza się w górę stosu. Pierwotnie konsumentem App Intent była osoba dotykająca Shortcuts. Potem głos Siri. Potem Spotlight. Potem podsumowania Apple Intelligence. Teraz systemowe powierzchnie Apple Intelligence oparte na LLM używają ich do działania na żądania użytkownika. Powierzchnia App Intent, którą wydasz w 2026 roku, jest tą, którą Apple Intelligence będzie wywoływać w iOS 27, 28, 29.
Powyższy wzorzec to dokładnie to, co mam na myśli, mówiąc, że App Intents nie są funkcją Siri. Są ustrukturyzowanym API do użycia narzędzi dla całej warstwy AI Apple. SwiftUI był najważniejszym API interfejsu, bo stał się jedynym sposobem na napisanie aplikacji dla visionOS, watchOS 10+ i iOS 17+. App Intents podążają tym samym łukiem po stronie AI: to powierzchnia, na którą Apple stawia wszystko.
Co się zmienia teraz, gdy Foundation Models zostało wydane
Foundation Models to framework, który pojawia się na każdym urządzeniu kwalifikującym się do Apple Intelligence. Granica sprzętowa jest tą samą listą co Apple Intelligence: iPhone 15 Pro i 15 Pro Max (A17 Pro), linia iPhone 16, linia iPhone 17, iPhone Air, iPhone 17e, iPad Pro z M1 lub nowszym, iPad Air z M1 lub nowszym, iPad mini z A17 Pro, Vision Pro z M2 lub nowszym oraz Mac z M1 lub nowszym. Wyraźnie nieobecne: podstawowy iPhone 15 / 15 Plus.412
Wniosek: jeśli systemowe powierzchnie Apple (Siri, Spotlight, Apple Intelligence) w ogóle wywołują Twoją aplikację, to robią to przez App Intents i App Entities. Dla aplikacji zewnętrznych nie istnieje żadne API setSystemPrompt(...) w systemowej warstwie AI. Istnieje rejestr intentów. Foundation Models dodaje równoległą powierzchnię Tool wewnątrz aplikacji dla deweloperów, którzy chcą mieć własne funkcje LLM działające na urządzeniu. Kontrakt międzyaplikacyjny (ten, którego Apple Intelligence i Siri używają do znalezienia Twojej aplikacji) przechodzi przez App Intents.
Trzy konkretne konsekwencje dla deweloperów aplikacji:
Aplikacja bez odpowiedniego App Intent jest nieosiągalna z poziomu polecenia głosowego Siri w swojej kategorii. Apple Intelligence kieruje frazy w stylu „Hej Siri, zaloguj moją wodę” do aplikacji, które jako pierwsze zadeklarowały pasujący intent. Intent w aplikacji Water wydałem w lutym 2026. Mój odczyt kierunku frameworku: aplikacje do nawodnienia, które wydadzą intent w 2027 roku, wejdą na rynek, na którym wagi routingu już zdążyły skumulować się na korzyść tych, którzy ruszyli pierwsi. Ta sama logika dotyczy list zakupów, logowania treningów, wpisów w kalendarzu, wyszukiwania zdjęć. Spodziewam się, że przewaga pierwszego gracza w deklaracjach intentów będzie się kumulować tak, jak działo się to w przypadku innych API będących platformowymi zakładami Apple (kategorie HealthKit, rozbudowane wyniki Spotlight, tokeny Live Activities).
Personalizacja Apple Intelligence czyta z App Entities, nie tylko z intentów. AppEntity deklaruje „ta aplikacja ma dane o takim kształcie”. Kiedy użytkownik pyta „jaką ostatnią książkę dodałem do listy do przeczytania”, Apple Intelligence przeszukuje każdą AppEntity pasującą do Book we wszystkich zainstalowanych aplikacjach. Jeśli Twoja aplikacja ma listę do przeczytania, ale nie ma zadeklarowanej BookEntity, Twoje dane są niewidoczne dla powierzchni AI Apple. Apple Intelligence nie może pobrać ani odwołać się do Twoich danych.11
Kształt zwracany IntentResult & ProvidesDialog jest coraz ważniejszy. Apple Intelligence komponuje wyniki intentów w dłuższe odpowiedzi w Siri, Spotlight i na zegarku. perform(), które po prostu zwraca sukces bez ustrukturyzowanego dialogu, jest trudniejsze do skomponowania przez system w spójną odpowiedź. ProvidesDialog i ProvidesView nie są opcjonalną grzecznością; są sposobem, w jaki Twoja akcja staje się cytatem na powierzchni AI użytkownika.
Co zbudowałbym inaczej
Jedenaście tygodni logów produkcyjnych w aplikacji Water mówi mi trzy rzeczy, które powinienem był zrobić wcześniej.
Wydaj więcej intentów, niż wydaje Ci się, że potrzebujesz. Wydałem jeden. Powinienem był wydać cztery: LogWaterIntent, CheckTodaysProgressIntent, AdjustGoalIntent, ShowHistoryIntent. Każdy odpowiada frazie Siri, którą użytkownicy faktycznie próbują wypowiedzieć („ile wody dziś wypiłem”, skierowane do generycznej AI Apple zamiast do danych mojej aplikacji). Każdy brakujący intent to zapytanie, które Apple Intelligence kieruje z pominięciem mnie.
Ciąg dialogowy nie jest treścią e-maila. Miałem ProvidesDialog od samego początku, ale mój wczesny dialog był prozą. Użytkownik słuchający go przez CarPlay lub AirPods potrzebuje krótkiej, konkretnej, opartej na faktach struktury: „8 uncji zalogowane. Zostało 32 uncje.” Powierzchnia zegarka w szczególności agresywnie skraca tekst. Konwersacyjny dialog daje gorsze doświadczenie niż dialog pewny faktów. Przepisałem swój w 4. tygodniu.2
App Entities mają większe znaczenie, niż sądziłem. Mam model SwiftData WaterEntry. Powinienem również zadeklarować WaterEntryEntity: AppEntity wraz z towarzyszącym WaterEntryQuery: EntityQuery, aby Apple Intelligence mogło odpowiedzieć na „pokaż mi, kiedy piłem wodę wczoraj”. Minimalne połączenie:11
struct WaterEntryEntity: AppEntity {
static var typeDisplayRepresentation: TypeDisplayRepresentation = "Water Entry"
static var defaultQuery = WaterEntryQuery()
var id: UUID
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(amount) oz at \(timestamp.formatted())")
}
@Property(title: "Amount") var amount: Int
@Property(title: "Timestamp") var timestamp: Date
}
struct WaterEntryQuery: EntityQuery {
func entities(for identifiers: [UUID]) async throws -> [WaterEntryEntity] {
// Fetch matching entries from SwiftData
}
func suggestedEntities() async throws -> [WaterEntryEntity] {
// Recent entries Apple Intelligence can suggest
}
}
Dwa małe typy Swift plus klej do pobierania danych ze SwiftData. Aby uczynić poszczególne wpisy widocznymi w Spotlight (tak, by użytkownicy szukający „woda” trafili na właściwy wpis), należy dostosować encję do IndexedEntity i przekazywać aktualizacje indeksu przy zapisach. To jest to, czego pipeline Spotlight Apple oczekuje ponad samym udostępnieniem AppEntity.
Ten sam kształt ma zastosowanie w innych miejscach moich aplikacji. Get Bananas, moja aplikacja z listą zakupów, ma już model SwiftData @Model ShoppingItem z @Attribute(.unique) var id: UUID, name, amount, section, isChecked, plus pole lastModified do synchronizacji przez iCloud Drive.13 Opakowanie go jako ShoppingItemEntity: AppEntity i wydanie kilku intentów (AddShoppingItem, CheckOffItem, ShowList) udostępniłoby Apple Intelligence tę samą warstwę trwałości, którą Get Bananas już udostępnia Claude Desktop poprzez swój serwer MCP .mcpb.14 Dwa ekosystemy LLM, dwa różne kontrakty, ta sama lista zakupów. To jest teza o równoległych kontraktach w postaci jednej wydanej aplikacji: model SwiftData to dane, App Intents to kontrakt Apple, MCP to kontrakt Anthropic, obie powierzchnie operują na tym samym źródle prawdy.
Kiedy nie wydawać App Intent
Odmowa jest częścią projektu.
Jeśli Twoja aplikacja jest czysto konsumpcyjna (czyta zdjęcia użytkownika, wyświetla wiadomości, odtwarza dźwięk) i nie ma zmiennego stanu użytkownika, App Intents mogą nie mieć nic do udostępnienia. Framework Apple wspiera OpenIntent (po prostu otwórz aplikację w danym kontekście), ale jeśli jedyną użyteczną akcją jest „otwórz aplikację”, intent jest zbędnym narzutem. Nie wydawaj go tylko po to, żeby go mieć.
Jeśli akcja zależy od elementów UI trudnych do abstrahowania (złożone, wieloetapowe narzędzie typu canvas, aplikacja do edycji 3D), wymagany przez intent parameterSummary zdegraduje się do mglistego, pseudonaturalnego języka, którego nikt naprawdę nie wypowiada. Fraza Siri „edytuj moje zdjęcie narzędziem rozmycia o sile 7” jest technicznie możliwa, ale żaden człowiek jej nie wypowie. Powierzchnia takiego intentu to podatek bez zwrotu.
Właściwa zasada: App Intent zarabia na swoje utrzymanie, gdy istnieje zdanie, które użytkownik wypowiedziałby naturalnie i które wyzwala akcję. „Zaloguj 8 uncji wody” to takie zdanie. „Zastosuj rozmycie Gaussa z sigmą 2,4 do warstwy 3” — nie. Jeśli akcje Twojej aplikacji skupiają się na tym drugim wzorcu, intenty nie są Twoją dźwignią konwersji.
Podsumowanie
Od trzech lat Apple sygnalizuje, że systemowa warstwa AI iOS przechodzi przez App Intents. WWDC 2024 dodało kierowanie Apple Intelligence przez nie. WWDC 2025 dodało obok Foundation Models jako osobną powierzchnię do wywoływania narzędzi wewnątrz aplikacji, pozostawiając App Intents jako międzyaplikacyjny kontrakt, którego Siri / Spotlight / Apple Intelligence wciąż używają. Każdy sygnał wskazuje w tym samym kierunku: typowany, deklaratywny App Intent jest kontraktem, który aplikacje zewnętrzne podpisują teraz z systemem.
Większość aplikacji iOS wciąż traktuje App Intents jak Siri Shortcuts: funkcję do wydania, jeśli starczy czasu. Mój odczyt jest taki, że to ujęcie zestarzeje się źle. W miarę jak systemowe powierzchnie Apple Intelligence się rozszerzają (już dziś przez Siri, Spotlight, Shortcuts i podsumowania Apple Intelligence), aplikacje bez zadeklarowanych intentów prawdopodobnie znajdą się poza grafem routingu. Powierzchnia pierwszego gracza, według mojego doświadczenia w obserwowaniu innych platformowych zakładów Apple, kumuluje się.
Water ma wydany LogWaterIntent od jedenastu tygodni. Ilość kodu potrzebna do wydania App Intent jest na tyle mała, że mieści się w jednym pliku. Koszt jego niewydania rośnie z każdym wydaniem Apple Intelligence.
Jeśli wydajesz aplikację iOS w 2026 roku i nie zadeklarowałeś co najmniej jednego App Intent, Twoja mapa drogowa ma brakującą pozycję. Dodaj ją.
FAQ
Czym jest App Intent w programowaniu na iOS?
App Intent to typowana, deklaratywna struktura Swift, która udostępnia jedną z akcji Twojej aplikacji systemowym powierzchniom AI Apple. Deklaruje parametry przez @Parameter, podsumowanie w języku naturalnym przez parameterSummary oraz asynchroniczne ciało perform(), które wykonuje pracę i zwraca ustrukturyzowany wynik. Siri, Spotlight, Shortcuts i Apple Intelligence od Apple mogą go wywołać. Foundation Models (działający na urządzeniu LLM od Apple) używa osobnego protokołu Tool do bezpośrednich wywołań narzędzi wewnątrz aplikacji.
Czym App Intents różnią się od starszego INIntent?
App Intents (wprowadzone w iOS 16, 2022) zastąpiły INIntent jako podstawowy framework intentów Apple. Nowszy framework jest w pełni natywny dla Swift, używa property wrappers takich jak @Parameter, wspiera bezpieczne typowo zapytania o encje przez AppEntity i jest powierzchnią, którą wywołują Siri, Spotlight, Shortcuts i Apple Intelligence. Starszy INIntent jest nadal wspierany, ale nie otrzymuje żadnych nowych prac nad funkcjami.
Czy potrzebuję iOS 26, aby wydać App Intent?
Nie. App Intents są dostępne od iOS 16 wzwyż. iOS 26 dodaje obok framework Foundation Models, ale same deklaracje App Intent działają na iOS 16+. Przykładowy kod powyżej używa SwiftData (iOS 17+), więc cel wdrożenia zależy od tego, co importuje ciało perform(). Czyste App Intents działają wstecz aż do iOS 16; te oparte na SwiftData wymagają iOS 17.
Jaka jest różnica między App Intent a App Entity?
App Intent to akcja (czasownik). App Entity to dane, o których wie Twoja aplikacja (rzeczownik). LogWaterIntent to intent. WaterEntry stające się typem, o który można pytać, to encja. Apple Intelligence używa obu: intentów do wykonywania akcji, encji do pobierania i przywoływania danych w odpowiedziach.
Jak App Intents mają się do wywoływania narzędzi w Foundation Models?
Foundation Models udostępnia własny protokół Tool do bezpośrednich wywołań narzędzi LLM wewnątrz aplikacji. App Intents pozostają kanoniczną, międzyaplikacyjną powierzchnią, którą wywołują Apple Intelligence, Siri i Spotlight. Ten sam kierunek (typowane, deklaratywne użycie narzędzi); dwa równoległe kontrakty. Aplikacja, która chce być osiągalna przez systemowe powierzchnie AI, wydaje App Intents; aplikacja, która chce wywoływać własny LLM działający na urządzeniu z niestandardowymi narzędziami, wydaje zgodności z Tool. Wiele aplikacji wyda oba.
App Intents nie są funkcją. Są kontraktem. Aplikacja, która wyda intent jako pierwsza, dostaje powierzchnię; aplikacja, która wyda go później, zastaje powierzchnię już skierowaną gdzie indziej. Jedenaście tygodni temu wydałem jeden w aplikacji Water. Kumulacja już się zaczęła.
Więcej z serii Apple Ecosystem
Ten esej jest punktem wejścia. Pozostałe cztery omawiają resztę stosu architektury:
- Dwa ekosystemy agentów, jedna lista zakupów: jak Get Bananas udostępnia te same dane Apple Intelligence (App Intents) i Claude Desktop (MCP) przez jeden plik JSON w iCloud Drive.
- Liquid Glass w SwiftUI: trzy wzorce z wydawania Return: wzorce produkcyjne dla warstwy wizualnej iOS 26.
- Pięć platform Apple, trzy współdzielone pliki: strategia wydawania wieloplatformowego, kiedy współdzielić kod, a kiedy rozdzielać cele.
- HealthKit + SwiftUI na iOS 26: warstwa źródeł danych obejmująca przepływy autoryzacji, typy próbek oraz pułapkę, która blokuje użytkownikom dostęp do Twojej aplikacji.
Albo przejdź od razu do pełnego huba: Seria Apple Ecosystem. Szerszy kontekst iOS z agentami AI znajdziesz w przewodniku po programowaniu agentów iOS.
Bibliografia
-
Osobisty test terenowy, 8 lutego 2026, ~9:15 PT. Zarejestrowany jako pierwszy kompleksowy zapis Siri →
LogWaterIntent→ SwiftData na sparowanym Apple Watch. ↩ -
Autorska aplikacja Water na iOS, wydana przez 941 Apps (941apps.com).
LogWaterIntent.swiftwydany w Water 1.4, commite398c588 lutego 2026. Powyższy fragment kodu źródłowego to wersja produkcyjna z tego początkowego commita; ciąg dialogowy był od tego czasu iterowany. ↩↩↩ -
Apple, „Apple Intelligence Foundation Language Models”, machinelearning.apple.com. Hybryda: na urządzeniu + Private Cloud Compute. ↩
-
Apple Developer, framework „Foundation Models”. iOS 26+.
LanguageModelSessionudostępnia wywoływanie narzędzi przez protokółTool, osobny od protokołuAppIntentużywanego przez Siri / Spotlight / Apple Intelligence. Oba to równoległe kontrakty w tym samym kierunku. ↩↩ -
Apple Developer, „Creating Your First App Intent”. Deklaracja parametrów oparta na property wrappers; to typy są schematem. ↩↩
-
Apple Developer, „ParameterSummary”. Używane przez UI Shortcuts, dialog Siri i potwierdzenia Apple Intelligence. ↩
-
Apple Developer, „IntentResult”. Protokoły
ProvidesDialog,ProvidesViewiReturnsValuekomponują się zIntentResult, kształtując to, co Siri, Spotlight, zegarek i Apple Intelligence otrzymują z powrotem zperform(). ↩ -
Apple Developer, „SiriKit”. SiriKit Intents (
INIntent) pojawiły się w iOS 10 (2016) z powierzchnią o ustalonych domenach (wiadomości, płatności, zamawianie przejazdów). Siri Shortcuts pojawiły się w iOS 12 (2018), a obsługa intentów wewnątrz aplikacji w iOS 13 (2019). ↩ -
Apple, „What’s new in App Intents”, WWDC 2022. Wprowadzenie typowanego, deklaratywnego frameworku App Intents. ↩
-
Apple, „Bring your app to Siri”, WWDC 2024. Kierowanie Apple Intelligence przez App Intents i App Entities. ↩
-
Apple Developer, „AppEntity protocol”. Wersja danych App Intents; możliwa do odpytywania przez Apple Intelligence i inne systemowe powierzchnie. ↩↩
-
Apple, „Apple Intelligence System Requirements”. Kwalifikujące się urządzenia: iPhone 15 Pro i Pro Max (A17 Pro), linia iPhone 16, linia iPhone 17, iPhone Air, iPhone 17e, iPad Pro z M1 lub nowszym, iPad Air z M1 lub nowszym, iPad mini z A17 Pro, Apple Vision Pro z M2 lub nowszym oraz Mac z M1 lub nowszym. Wyraźnie nieobecne: podstawowy iPhone 15 / 15 Plus. Framework Foundation Models dziedziczy tę samą barierę sprzętową. ↩
-
Autorska Get Bananas, aplikacja z listą zakupów oparta na SwiftUI + SwiftData dla iOS, macOS, watchOS i visionOS.
ShoppingItemjako SwiftData@Modelznajduje się wItem.swift:@Attribute(.unique) var id: UUID,name: String,amount: String,section: String,isChecked: Bool,isOptional: Bool,sortOrder: Int,lastModified: Date?. Synchronizacja iCloud Drive przeziCloudBackupManager. ↩ -
Get Bananas dostarcza serwer MCP (Model Context Protocol) spakowany jako
get-bananas.mcpbdla Claude Desktop. Udostępnione narzędzia:get_shopping_list,add_item,remove_item,update_item,update_shopping_list. Specyfikacja MCP Anthropic: modelcontextprotocol.io. ↩