← Alle Beitrage

App Schemas: Machen Sie Ihre App für Siri verfügbar

Auf der WWDC 2026 nahm ein Apple-Ingenieur eine SwiftUI-Kalender-App, die bislang nur auf Tipps reagierte, und brachte Siri dazu, deren Termine zu durchsuchen, Fragen nach Name und Notizinhalt zu beantworten, Termine per Sprache anzulegen und zu aktualisieren sowie eine eigene Ergebniskarte darzustellen – und das alles mit drei Structs und ein paar ausgefüllten Code-Snippets.1 Der Mechanismus hinter diesem Wandel sind App Schemas: eine Möglichkeit, die Inhalte und Aktionen einer App in Begriffen zu beschreiben, die Siri bereits versteht, ganz ohne Trainingsphrasen und ohne Sprachverarbeitung aufseiten der Entwickler.1 Die Session ist ein Code-along rund um ein Beispielprojekt namens CometCal, und die Lehre unter dem kosmischen Thema ist struktureller Natur. Sie bringen Siri nicht Ihr Vokabular bei. Sie deklarieren Ihre Daten und Ihre Aktionen gegen eine Form, die Siri bereits kennt – der Rest folgt von selbst.

Dieser Beitrag durchläuft die drei Säulen, die dieses Ergebnis tragen: das Schema-Domänen-Modell, die semantische Donation an Spotlight über IndexedEntity sowie die Onscreen-Awareness samt der valueState-Unterscheidung, die sprachgesteuerte Aktualisierungen sicher macht. Alles Folgende stammt direkt aus der Session. Das Thema unterscheidet sich von der Hintergrundausführung in App Intents, die das Ausführen von Arbeit ohne Start der UI behandelt; hier liegt der Fokus darauf, wie Siri über Ihre Inhalte nachdenkt und auf ihnen handelt.

TL;DR

  • App Schemas beschreiben die Entitäten, Aktionsparameter und Ausgaben einer App in Begriffen, die Siri bereits versteht, organisiert in App Schema Domains; die Kalender-Domäne deckt Termine, Kalender, Teilnehmer und die zugehörigen Aktionen ab, ganz ohne Trainingsphrasen und ohne NLP aufseiten der Entwickler.1
  • Schematisierte Entitäten entstehen aus Xcode-Code-Snippets: Tippen Sie ein Domänenpräfix wie calendar_ und wählen Sie ein Snippet (zum Beispiel calendar_calendar), das die Entität samt Makro, Eigenschaften, Display-Repräsentation und Query-Stubs gerüstet.1
  • Lässt man eine Entität dem IndexedEntity-Protokoll entsprechen und doniert sie über indexAppEntities an einen CSSearchableIndex (und entfernt sie über deleteAppEntities), kann Siri sie nach Name, Eigenschaft oder Kontext auflösen – ohne eine eigene Property-Query.1
  • Zwei View-Modifier, .appEntityIdentifier an einer Liste und .userActivity an einer Detailansicht (jeweils mit einem EntityIdentifier), verschaffen Siri Onscreen-Awareness, sodass eine Anfrage wie „E-Mail an die Personen in diesem Termin” aufgelöst wird, ohne den Termin zu benennen.1
  • Update-Intents legen IntentParameter.valueState offen, wobei .set mit einem Wert, .set mit nil und .unset einen neuen Wert, ein explizites Löschen und einen fehlenden Parameter unterscheiden, sodass von Siri ausgelöste Bearbeitungen eindeutig bleiben.1

Was App Schemas tatsächlich sind (Session 344)

Watch on Apple Developer ↗

Justin vom Swift Intelligence Frameworks Team erklärt App Schemas, bevor er Xcode öffnet, ab 3:12.

Siri erreicht eine App über das App Intents Framework, und Apple Intelligence treibt das Schließen darauf an.1 Das Ausgangsproblem in CometCal ist schlicht: „Im Moment hat Siri keine Ahnung, was ein Kalender oder ein Termin innerhalb von CometCal bedeutet.”1 App Schemas schließen diese Lücke. Wie es in der Session heißt, beschreiben sie „die Inhalte und Aktionen meiner App in Begriffen, die Siri bereits verstehen kann. Sie definieren die Struktur meiner Entitäten, die Parameter meiner Aktionen und die Ausgaben. Keine Trainingsphrasen, keine Sprachverarbeitung auf meiner Seite.”1

Die organisierende Einheit ist die App Schema Domain. Die Kalender-Domäne „deckt alles rund um Terminplanung ab: Termine, Kalender, Teilnehmer und die Aktionen, die auf ihnen operieren.”1 Da die Formen vordefiniert sind, übernimmt der Editor die Katalogisierung. Der Ingenieur erstellt eine CalendarEntity-Datei, importiert AppIntents, tippt calendar_, und „Xcode bietet jedes Schema der Kalender-Domäne direkt in der Autovervollständigung an.”1 Die Auswahl von calendar_calendar füllt die Struktur aus: das Entitäts-Makro, die Eigenschaften, eine Display-Repräsentation und Query-Stubs – und erzeugt das, was die Session „eine schematisierte Entität nennt, einen Typ, über den Siri nachdenken kann.”1

Die Namenskonvention verdient einen sorgfältigen Hinweis. Die Namen der Schema-Snippets erscheinen im Editor als kleingeschriebene, mit Unterstrich vorangestellte Bezeichner (calendar_calendar, calendar_attendee, calendar_event, calendar_createEvent, calendar_updateEvent, dazu Enum-Snippets wie calendar_attendeeStatus und calendar_attendeeType), und das gesprochene Transkript gibt sie ebenso wieder. Die Swift-Typen, die sie gerüstet (ein @AppEntity-Makro, eine DisplayRepresentation, Konformitäten zu Query-Protokollen), folgen der üblichen Swift-Schreibweise. Prüfen Sie die exakte Schreibweise und Groß-/Kleinschreibung jedes Symbols anhand von Apples App-Intents-Dokumentation und des herunterladbaren CometCal-Beispielprojekts, bevor Sie dagegen entwickeln, denn ein gesprochenes Code-along ist keine präzise Referenz für die Großschreibung.

Der Ertrag des Schema-Modells ist Reichweite bei sehr wenig Code. Die Session fasst die gesamte Inhaltsschicht als „drei Structs und das Ausfüllen einiger Code-Snippets” zusammen.1 CometCal baut drei Entitäten von zunehmender Reichhaltigkeit: einen Kalender, einen Teilnehmer und einen Termin, der die beiden anderen zusammenführt. Der Termin „setzt sich aus den zuvor gebauten Entitäten zusammen”: sein Kalender ist eine CalendarEntity, und seine Teilnehmer sind ein Array von AttendeeEntity, und „Siri versteht diese Beziehungen mit App Schemas.”1 Das Schema entscheidet auch, was erforderlich und was optional ist. Essenzielles wie Titel oder Startdatum wird direkt verdrahtet, optionale Schema-Eigenschaften, die eine App nicht nutzt (die Session nennt Reisezeit und virtuellen Ort), können unbelegt bleiben, und eine Eigenschaft, die im Datenmodell, aber nicht im Schema lebt, etwa isFavorite, lässt sich der Entität dennoch hinzufügen.1

Zwei weitere Schema-Mechaniken treten beim Termin in Erscheinung. Union-Werte erlauben es einer Eigenschaft, einen von mehreren Typen aufzunehmen: der Ort kann „entweder ein PlaceDescriptor aus dem GeoToolbox Framework oder ein String” sein, und ein Alarm kann entweder eine Duration oder ein Date sein.1 Die Wiederholungseigenschaft nutzt Foundations Calendar.RecurrenceRule und konvertiert für die Fälle täglich, wöchentlich, monatlich und jährlich in CometCals eigenes Frequenz-Enum und zurück.1 Schematisierte Enums (die Session verweist auf ein Termin-Status-Enum, das sie EventEntityStatus nennt, sowie auf die obigen Teilnehmer-Enums) kommen vollständig aus dem Snippet, und die App übernimmt die zutreffenden Fälle; nutzt eine App andere Terminologie, bilden Sie das bestehende Modell auf die Fälle des Schemas ab, „damit Siri die Form erkennen kann.”1

Semantische Donation über IndexedEntity

Das Schema gibt Siri ein Vokabular. Die Donation gibt Siri die tatsächlichen Daten, über die sie nachdenken kann. Die beiden sind getrennte Schritte, und die Session stellt deutlich klar, dass es leicht ist, den zweiten zu verpassen: „IndexedEntity definiert die Form meines indexierten Inhalts, aber die Entitäten müssen trotzdem noch doniert werden.”1

Eine Entität dem IndexedEntity-Protokoll entsprechen zu lassen, ist das, was eine Übereinstimmung nach Bedeutung statt allein nach Text ermöglicht.1 Der Grund ist der Suchindex. Die Konformität „erlaubt meiner App, Entitäten über den Spotlight-Index zu donieren, um die Vorteile des semantischen Verständnisses zu erhalten”, und sobald eine Entität doniert ist, „kann Siri sie nach Name, nach Eigenschaft oder nach Kontext auflösen, ohne dass eine eigene Property-Query nötig ist.”1 Diese letzte Aussage ist der ganze Punkt. Sie schreiben keinen maßgeschneiderten Matcher für „das Crew-Mittagessen” oder „Termine, die Sauerstoff erwähnen”. Siri durchsucht die donierten Titel und Notizinhalte direkt und „beantwortet jede Frage anhand der Inhalte der App. Keine eigene Sprachverarbeitung nötig … nur Entitäten und Schemas.”1

Die Donation läuft über CSSearchableIndex. CometCal hält eine CSSearchableIndex-Instanz, erstellt im Initializer seines CalendarManager unter einem für die App eindeutigen Namen.1 Die Regel, die die Session aufstellt, lautet, dass „immer wenn Kalender – oder überhaupt irgendeine indexierte Entität – geändert werden, der Index aktualisiert werden muss.”1 Also doniert die Datenschicht beim Schreiben: der Anlege-Pfad ruft vor der Rückgabe indexAppEntities mit dem Searchable Index auf, der Aktualisierungs-Pfad indexiert die geänderte Entität neu, und der Lösch-Pfad ruft deleteAppEntities auf und „übergibt dabei die ID und den Typ der Entität.”1 Nach dem Verdrahten der Kalender-Entität erstellt der Ingenieur einen Kalender namens „Lunar Orbit Log”, wischt zur Suche und findet ihn mit Icon und Titel – der Beweis, dass die Donation gegriffen hat.1

Nicht jede Entität sollte indexiert werden, und der Teilnehmer ist das Gegenbeispiel, das die Regel lehrt. AttendeeEntity entspricht TransientAppEntity statt IndexedEntity, „einer temporären Entität, die keinen eindeutigen Bezeichner benötigt und nicht für Abfragen gedacht ist.”1 Die Begründung ist Modellierungsdisziplin: in CometCal repräsentiert ein Teilnehmer „die Teilnahme einer Person an einem bestimmten Termin, nicht die Person selbst”, dieselbe Person kann an vielen Terminen teilnehmen, und „jede Teilnahme separat zu indexieren würde doppelte Ergebnisse in Spotlight erzeugen.”1 Da Teilnehmer stets über ihren Termin erreicht werden, gibt es keinen eigenständigen Nachschlagepfad zu pflegen, und TransientAppEntity „macht das explizit … keine Query zu schreiben, kein Index zu pflegen.”1 Der Teilnehmer führt außerdem IntentPerson ein, „die standardmäßige Art des Systems, eine Person mit Namen und Kontaktinformationen darzustellen”, nützlich, um die E-Mail-Adresse eines Teilnehmers an Mail zum Verfassen einer Nachricht zu übergeben.1

Die indexierten Entitäten benötigen weiterhin ihre Query-Infrastruktur. Die Query hält die Datenschicht über den @Dependency-Property-Wrapper, „die Art, wie App Intents gemeinsam genutzte Ressourcen in Intents und Queries injiziert”, sodass die Query den einen registrierten CalendarManager statt einer frischen Instanz nutzt, und die Query ist als Main-Actor markiert, weil der Manager es ist.1 Die erforderliche EntityQuery-Methode ruft anhand der ID für Fälle ab, in denen das System sie bereits kennt, und die Konformität zu EnumerableEntityQuery mit einer allEntities-Methode lässt das System später verfügbare Kalender auflisten, wenn Siri sie beim Anlegen eines Termins als Optionen anbieten muss.1 Eine DisplayRepresentation (Titel plus ein System-Kalenderbild) sagt Siri und Spotlight, wie die Entität dargestellt werden soll.1

Es gibt eine Navigationsnaht, die zu benennen sich lohnt, denn die Donation allein landet den Nutzer auf dem Hauptbildschirm der App. Ein OpenEventIntent, das dem system.open-Schema entspricht, eine EventEntity als Ziel nimmt und der Navigationsschicht sagt, dorthin zu routen, schließt diese Lücke: das System ruft es auf, „wann immer jemand ein Termin-Ergebnis in Spotlight oder Siri antippt oder Siri bittet, eines zu öffnen”, sodass ein angetipptes Ergebnis direkt zur Detailansicht des Termins öffnet.1

Onscreen-Awareness und die valueState-Unterscheidung

Die ersten beiden Säulen lassen Siri Inhalte nach Namen finden. Die dritte lässt Siri das nutzen, was bereits vor dem Nutzer liegt, und dann eindeutig darauf handeln.

Onscreen-Awareness kostet „nur zwei View-Modifier.”1 In der Listenansicht heftet sich .appEntityIdentifier an die Liste und „übergibt einen EntityIdentifier für jede der Termin-Entitäten”, was „die Liste mit ihren Entitäten verbindet, sodass das System beim Durchblättern der Liste weiß, welche Termine auf dem Bildschirm sind.”1 In der Detailansicht trägt .userActivity einen EntityIdentifier für den einen fokussierten Termin und teilt dem System mit, „dass dieser eine bestimmte Termin im Mittelpunkt steht, sodass Siri diesen Termin genau dem angesehenen zuordnen kann.”1 Sind beide vorhanden, kann ein Nutzer in der Detailansicht eines Termins sagen „E-Mail an die Personen in diesem Termin und bitte jemanden, Schokolade und Marshmallows mitzubringen”, und Siri nutzt ihr Verständnis des Onscreen-Termins, um die Teilnehmer zu finden und sie an Mail zu übergeben – ganz ohne Titel.1

Auf Inhalten zu handeln ist dasselbe Muster wie sie zu lesen, nur rückwärts ausgeführt. Auch Intents kommen aus Snippets. Das calendar_createEvent-Snippet gerüstet den Intent samt Makro, Schema, den vom Schema geforderten Parametern und einem Perform-Stub.1 Die Perform-Logik ist eine dreistufige Form, die die Session schlicht benennt: „die Parameter des Intents in etwas auflösen, das die Datenschicht versteht, die Aktion ausführen und das Ergebnis als Entität zurückgeben.”1 Beim Anlegen heißt das: den Ort aus seinem Union-Wert extrahieren, die Wiederholung konvertieren, sofern angegeben, die Anlege-Methode des Managers aufrufen und eine EventEntity zurückgeben.1 Da der Intent einem Schema entspricht, „kann Siri die ganze Schwerarbeit übernehmen. Sprache interpretieren, nach Klärung fragen und Details bestätigen”, sodass der Entwickler die Konversation nie schreibt.1

Die Aktualisierungen bringen die Feinheit zutage, die sprachgesteuerte Bearbeitungen vertrauenswürdig macht. Die meisten Parameter von calendar_updateEvent sind optional, weil ein Nutzer üblicherweise nur ein oder zwei Dinge ändert, und „der Termin-Parameter ist das, was Siri auflöst; alles andere ist optional.”1 Eine schlichte nil-Prüfung kann die eigentliche Frage nicht beantworten. Wie es die Session formuliert: „wenn die Wiederholung nil ist, bedeutet das ‚nicht ändern’ oder ‚entfernen’? Eine einfache nil-Prüfung sagt mir nicht, mit welchem Fall ich es zu tun habe.”1 Die Antwort ist IntentParameter.valueState, offengelegt, weil das Intent-Makro jede Eigenschaft in einen IntentParameter einhüllt. Die drei Zustände tragen eine eindeutige Bedeutung: „.set mit einem tatsächlichen Wert bedeutet, dass ein neuer Wert bereitgestellt wird. .set mit einem nil-Wert bedeutet, dass er explizit gelöscht wird. .unset bedeutet, dass der Parameter nicht Teil der Anfrage ist.”1 Die Unterscheidung „gilt für jeden optionalen Parameter, bei dem das Löschen des Werts eine bedeutsame Aktion ist”, weshalb „wiederhole diesen Termin nicht” die Wiederholung zuverlässig löscht, statt sie unangetastet zu lassen.1

Zwei letzte Feinheiten runden die Aktionsschicht ab. Eine eigene Ergebniskarte ersetzt Siris Standardkarte aus der Display-Repräsentation: das Hinzufügen von ShowsSnippetView zum Rückgabetyp der Perform-Methode und das Übergeben einer vorbereiteten SwiftUI-View (die der Session nimmt eine EventEntity) rendert das eigene Styling der App innerhalb von Siri – ein Ansatz, der „für jeden anderen Intent funktioniert, der ein Ergebnis zurückgibt.”1 Und DeleteEventIntent, „der einfachste der drei”, nimmt nur den Termin und eine optionale Spanne für wiederkehrende Termine; Siri „behandelt automatisch den Bestätigungsdialog, bevor etwas entfernt wird” und löst Mehrdeutigkeit auf, wenn mehr als ein Termin passt.1

Wichtigste Erkenntnisse

Für iOS-Entwickler, die App Intents adoptieren:

  • Greifen Sie zuerst zum Schema. Tippen Sie ein Domänenpräfix wie calendar_ in Xcode und lassen Sie die Autovervollständigung die verfügbaren Snippets auflisten; das Snippet gerüstet das Makro, die Eigenschaften, die Display-Repräsentation und die Query-Stubs, sodass Sie Typen und Mapping ausfüllen, statt Struktur zu erfinden.1
  • Entscheiden Sie pro Entität, ob sie sich einen Index verdient. Lassen Sie dauerhafte, abfragbare Inhalte IndexedEntity entsprechen und donieren Sie sie; nutzen Sie TransientAppEntity für teilnahmeartige Datensätze (CometCals Teilnehmer), die stets über ein Elternelement erreicht werden und Spotlight nur verschmutzen würden, wenn sie indexiert wären.1
  • Prüfen Sie die exakte Schreibweise und Groß-/Kleinschreibung von Symbolen anhand von Apples App-Intents-Dokumentation und des CometCal-Beispiels, bevor Sie entwickeln, da die Namen aus dem Code-along aus einem gesprochenen Transkript stammen.

Für Teams, die Sprach- und Apple-Intelligence-Abläufe gestalten:

  • Behandeln Sie die Donation als Verantwortung des Schreibpfads. Rufen Sie indexAppEntities beim Anlegen und Aktualisieren und deleteAppEntities beim Löschen auf, jeweils anhand von ID und Typ der Entität, damit Siris Index nie von den Daten abweicht.1
  • Fügen Sie Onscreen-Awareness früh hinzu: .appEntityIdentifier an Listen und .userActivity an Detailansichten (jeweils mit einem EntityIdentifier) lassen Nutzer „diesen Termin” statt seines Titels sagen.1
  • Behandeln Sie valueState in Update-Intents explizit. Verzweigen Sie nach .set-mit-Wert, .set-mit-nil und .unset, damit ein explizites Löschen nie als „unverändert lassen” gelesen wird.1

FAQ

Was sind App Schemas in App Intents?

App Schemas beschreiben die Inhalte und Aktionen einer App in Begriffen, die Siri bereits versteht: sie definieren die Struktur der Entitäten einer App, die Parameter ihrer Aktionen und die Ausgaben, ganz ohne Trainingsphrasen und ohne Sprachverarbeitung aufseiten der Entwickler. Sie sind in App Schema Domains organisiert; die Kalender-Domäne deckt Termine, Kalender, Teilnehmer und die zugehörigen Aktionen ab. In Xcode adoptieren Sie ein Schema, indem Sie ein Domänenpräfix wie calendar_ tippen und ein Code-Snippet wie calendar_calendar wählen, das die Entität gerüstet.1

Wie löst Siri die Inhalte meiner App nach Name oder Kontext auf?

Lassen Sie die Entität dem IndexedEntity-Protokoll entsprechen und donieren Sie sie an einen CSSearchableIndex (den Spotlight-Index), indem Sie indexAppEntities beim Anlegen und Aktualisieren sowie deleteAppEntities mit ID und Typ der Entität beim Löschen aufrufen. Die Donation verleiht Siri „semantisches Verständnis” und lässt sie eine Entität nach Name, nach Eigenschaft oder nach Kontext ohne eine eigene Property-Query auflösen, einschließlich des Durchsuchens von Notizinhalten für Fragen wie „welche Termine erwähnen Sauerstoff?”1

Wann sollte ich TransientAppEntity statt IndexedEntity verwenden?

Verwenden Sie TransientAppEntity für eine temporäre Entität, die keinen eindeutigen Bezeichner braucht und nicht für Abfragen gedacht ist. CometCals Teilnehmer passt, weil ein Teilnehmer die Teilnahme einer Person an einem bestimmten Termin repräsentiert, nicht die Person; dieselbe Person nimmt an vielen Terminen teil, und jede Teilnahme separat zu indexieren würde doppelte Spotlight-Ergebnisse erzeugen. Da Teilnehmer nur über ihren Termin erreicht werden, gibt es keinen eigenständigen Nachschlagepfad, sodass die transiente Entität weder eine Query noch einen Index benötigt.1

Was ist valueState und warum ist es für Update-Intents wichtig?

In einem Update-Intent hüllt das App-Intents-Makro jede Eigenschaft in einen IntentParameter, der einen valueState offenlegt. Er unterscheidet drei Fälle, die eine nil-Prüfung nicht kann: .set mit einem Wert bedeutet einen neuen Wert, .set mit nil bedeutet, dass der Wert explizit gelöscht wird, und .unset bedeutet, dass der Parameter nicht Teil der Anfrage war. Die Unterscheidung lässt von Siri ausgelöste Bearbeitungen eine Eigenschaft löschen (zum Beispiel „wiederhole diesen Termin nicht”), ohne dass dies mit „unverändert lassen” verwechselt wird.1

Wie verschaffe ich Siri Onscreen-Awareness meiner App?

Fügen Sie zwei View-Modifier hinzu. Setzen Sie .appEntityIdentifier an die Listenansicht und übergeben Sie einen EntityIdentifier für jede Termin-Entität, sodass das System beim Durchblättern weiß, welche Termine auf dem Bildschirm sind. Setzen Sie .userActivity mit einem EntityIdentifier an die Detailansicht, sodass das System weiß, dass ein bestimmter Termin im Fokus steht. Gemeinsam lassen sie einen Nutzer „E-Mail an die Personen in diesem Termin” sagen und Siri „diesen Termin” genau dem angesehenen zuordnen.1


Dieser Beitrag gehört zu einem Cluster über Apples Intelligence-Frameworks. Für das Framework, auf dem App Schemas aufbauen, beginnen Sie mit App Intents: Apples neue API zu Ihrer App. Für das Ausführen von Intent-Arbeit ohne Start der UI, was ein vom hier behandelten Inhalts-Reasoning getrenntes Anliegen ist, lesen Sie Hintergrundausführung in App Intents. Für die umfassendere Spotlight-Donations-Geschichte hinter der semantischen Auflösung siehe On-Device-KI und Spotlight-Medienindexierung. Der Hub der vollständigen Serie ist die Apple Ecosystem Series.

Referenzen


  1. Apple, WWDC 2026 Session 344, Code-along: Make your app available to Siri. Quelle für App Schemas und App Schema Domains (die Kalender-Domäne; keine Trainingsphrasen, kein NLP); schematisierte Entitäten über Xcode-Snippets (calendar_calendar, calendar_attendee, calendar_event, calendar_createEvent, calendar_updateEvent, calendar_attendeeStatus, calendar_attendeeType); IndexedEntity und Spotlight-Donation über CSSearchableIndex mittels indexAppEntities / deleteAppEntities; Auflösung nach Name, Eigenschaft oder Kontext; TransientAppEntity und die Modellierungsbegründung des Teilnehmers; IntentPerson; Union-Werte (PlaceDescriptor aus GeoToolbox, String; Duration- oder Date-Alarme) und Calendar.RecurrenceRule; der @Dependency-Wrapper, EntityQuery, EnumerableEntityQuery und DisplayRepresentation; das system.open-OpenEventIntent; Onscreen-Awareness über .appEntityIdentifier und .userActivity mit einem EntityIdentifier; IntentParameter.valueState (.set/.unset); die eigene Ergebniskarte über ShowsSnippetView; die Bestätigung und Disambiguierung von DeleteEventIntent; und das für automatisierte Tests referenzierte AppIntentsTesting Framework. 

Verwandte Beiträge

App Intents sind Apples neue API zu Ihrer App

Am 8. Februar 2026 habe ich in Water ein App Intent veröffentlicht. Hier erfahren Sie, was Apple Intelligence in iOS 26 …

14 Min. Lesezeit

Music Understanding vorgestellt: On-Device-Audioanalyse

Music Understanding ist Apples On-Device-Framework zur Analyse von Tonart, Rhythmus, Struktur, Tempo, Instrumentaktivitä…

10 Min. Lesezeit

The Robots Are Taking Exams in My Search Console

First-party GSC data: 91% of 3.8M impressions fail a human-query filter. Exam questions, pasted errors, and agent sweeps…

10 Min. Lesezeit