View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Vidéos

Ouvrir le menu Fermer le menu
  • Collections
  • Sujets
  • Toutes les vidéos
  • À propos

Retour à WWDC25

  • À propos
  • Résumé
  • Transcription
  • Développez pour Raccourcis et Spotlight avec App Intents

    Découvrez comment créer des App Intents qui rendent les actions disponibles et fonctionnent de manière optimale avec les nouvelles fonctionnalités de Raccourcis et Spotlight sur Mac. Nous vous montrerons comment vos actions se combinent de manière puissante avec les nouvelles actions Apple Intelligence disponibles dans l'app Raccourcis. Nous allons nous plonger dans le fonctionnement de la nouvelle action « Utiliser le modèle » et comment elle interagit avec les entités de votre app. Et nous verrons comment utiliser les API App Intents pour rendre vos actions disponibles dans Spotlight.

    Chapitres

    • 0:00 - Introduction
    • 1:16 - Utiliser le modèle
    • 11:40 - Spotlight sur Mac
    • 17:18 - Automatisations sur Mac

    Ressources

    • App Intents
    • App Shortcuts
    • Donating Shortcuts
    • Human Interface Guidelines: App Shortcuts
    • Soup Chef: Accelerating App Interactions with Shortcuts
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC23

    • Design Shortcuts for Spotlight
    • Spotlight your app with App Shortcuts
  • Rechercher dans cette vidéo…

    Bonjour, je m’appelle Ayaka et je fais partie de l’équipe Raccourcis. Bienvenue dans Développer pour Raccourcis et Spotlight avec App Intents. Le framework App Intents rend vos apps plus visibles sur nos plates-formes en permettant d’utiliser leurs fonctionnalités de base dans des emplacements tels que Raccourcis et Spotlight. L’app Raccourcis permet de connecter différentes apps et leurs actions entre elles afin de rendre le quotidien plus rapide et fluide. Raccourcis permet d’automatiser des tâches répétitives et de connecter les fonctionnalités de différentes apps. Par exemple, vous enregistrez une recette sur Safari dans l’app Notes. Cette année, nous intégrons les capacités d’Apple Intelligence à Raccourcis pour combiner ces actions plus facilement, et de rendre le tout plus fun. Vous pouvez désormais effectuer des actions Raccourcis, y compris les actions des apps, depuis Spotlight sur Mac. Nous allons voir comment adopter App Intents pour que votre app fonctionne parfaitement avec Raccourcis et Spotlight. Nous allons découvrir la nouvelle action Utiliser le modèle, qui permet d’utiliser les modèles Apple Intelligence dans vos raccourcis. Nous verrons ensuite comment fonctionne cette action, et les nouvelles façons d’exécuter Raccourcis dans Spotlight et Automatisations sur Mac. C’est parti. Voici la nouvelle action Utiliser le modèle. C’est l’une des nouvelles actions Apple Intelligence ajoutées à Raccourcis cette année. Image Playground, Outils d’écriture et bien d’autres ont aussi été ajoutées. Avec cette nouvelle action, les tâches fastidieuses comme l’analyse de texte ou la mise en forme de données, sont désormais très simples. Vous pouvez choisir un grand modèle serveur sur Private Cloud Compute pour traiter les demandes complexes tout en préservant la confidentialité, ou le modèle de l’appareil pour les demandes simples, sans connexion réseau requise. Vous pouvez aussi choisir ChatGPT pour faire appel à ses connaissances et son expertise. Par exemple, vous pouvez utiliser un modèle pour filtrer les évènements de votre calendrier liés à un voyage spécifique, résumer du contenu web, comme le Mot du jour, et même demander à ChatGPT quelles sont les actualités culinaires à San Francisco. Voici un exemple de raccourci qui utilise un modèle. Il s’agit d’un raccourci simple qui m’aide à organiser mes notes prises au travail. Il obtient les notes que j’ai créées aujourd’hui, les parcourt en boucle et utilise le modèle pour demander si elles portent sur le développement de fonctionnalités de l’app Raccourcis. Si la réponse est oui, il les ajoute au dossier Projets Raccourcis. Ici, comme j’utilise la sortie du modèle et une action if, qui attend une entrée booléenne, le runtime génère automatiquement un type de sortie booléen. Au lieu de renvoyer un texte tel que « Oui, cette note semble concerner le développement de fonctionnalités pour l’app Raccourcis », utile mais un peu trop détaillé et du mauvais type, le modèle renvoie une réponse booléenne oui ou non, à transmettre à l’action if. Si vous souhaitez plus de contrôle, vous pouvez choisir l’un de ces types de sortie intégrés. Par exemple, vous pouvez procéder ainsi lorsque vous testez les actions pour le flux que vous avez en tête, sans savoir encore à quelle action vous allez connecter la sortie. Aujourd’hui, nous allons examiner Texte, Dictionnaire et Contenu depuis vos apps et voir ce que vous devez faire en tant que développeur pour vous assurer que la sortie du modèle correspond aux entrées acceptées par votre app. Commençons par Texte. Texte est l’élément essentiel des modèles de langage. À première vue, cela semble être l’option la plus simple et la plus basique, mais elle est en réalité très complexe et riche. Littéralement. En effet, les modèles répondent souvent avec du texte enrichi. Par exemple, certaines parties de la réponse peuvent être en gras ou en italique. Elle peut même contenir une liste ou un tableau. Si votre app prend en charge le contenu Texte enrichi, assurez-vous que vos App Intents utilisent le type de chaîne attribuée pour les paramètres texte si besoin. Une chaîne attribuée est une combinaison de caractères, de plages et d’un dictionnaire qui, ensemble, définissent le rendu du texte. Avec la prise en charge de chaînes Attribuées, la sortie du modèle se connecte à l’app de manière transparente et sans perte. Voyons comment ça marche. J’ai un raccourci qui utilise ChatGPT pour créer un modèle d’entrée de journal que je peux utiliser dans l’app Bear. Je demande au modèle d’inclure un tableau pour noter mon humeur le matin, l’après-midi et le soir, ainsi qu’un espace pour noter les moments forts de ma journée. Le raccourci prend ensuite la sortie du modèle et la transmet à l’action Créer une note de l’app Bear. Je vais l’exécuter pour montrer comment ça marche.

    Voici la nouvelle entrée de mon journal aujourd’hui. Elle comprend la mise en forme de texte enrichi, avec les infos clés en gras, et le tableau de suivi de l’humeur que j’ai demandé. Les moments forts d’aujourd’hui ? Peut-être « Session enregistrée WWDC » ?

    Je terminerai cette session de journaling plus tard. L’app intent Créer une note de Bear prend en charge les chaînes Attribuées, par conséquent elle a récupéré la sortie Texte enrichi du modèle et l’a présentée sans perte dans son app.

    Si vous souhaitez en savoir plus sur la prise en charge des chaînes Attribuées dans votre app, regardez la vidéo « What’s new in Foundation » et la session Code-along sur Texte enrichi. Passons maintenant à Dictionnaire. Le type de sortie Dictionnaire est utile lorsque vous avez besoin de retourner plusieurs données à partir d’une seule requête dans un format structuré. Par exemple, je veux créer un raccourci qui recherche dans tous les fichiers de mon dossier Factures des infos comme le fournisseur, le montant et la date de chaque élément, puis les ajoute sous forme de ligne à une feuille de calcul pour suivre mes finances. Pour cela, je peux utiliser le modèle afin d’extraire ces infos et indiquer exactement le format souhaité pour la sortie Dictionnaire. Je peux utiliser les valeurs de Dictionnaire dans des actions subséquentes, comme l’ajout d’une ligne à une feuille de calcul. Grâce aux modèles de langage, je peux prendre des données non structurées, comme le contenu d’un PDF, et leur donner la structure requise pour les relier à une autre action. Enfin, examinons Contenu dans vos apps. Dans vos apps, Contenu se présente sous forme d’entités d’app que vous définissez à l’aide du framework App Intents. Par exemple, une app Calendrier peut fournir des entités pour Calendriers et Évènements. Les App Intents sont les actions ou les verbes de votre app, et les Entités d’app sont les noms. Vous pouvez aussi transmettre des Entités d’app au modèle. Si vous transmettez une liste d’entités telles que des évènements de calendrier à la requête, une option supplémentaire s’affiche : le type d’entité d’app que vous avez transmis. Par exemple, si je transmets une liste d’évènements de calendrier, je peux demander au modèle de filtrer ces évènements pour obtenir ceux liés à un voyage spécifique. En arrière-plan, l’action transmet une représentation JSON de votre entité au modèle. Vous devez donc vous assurer d’exposer toutes les informations que vous souhaitez qu’il puisse traiter dans la définition de l’entité. Tout d’abord, toutes les propriétés d’entité exposées à Raccourcis seront converties en chaîne et incluses dans la représentation JSON. Le nom fourni dans la représentation d’affichage du type sera inclus pour indiquer au modèle ce que représente l’entité, par exemple, un Évènement de calendrier. Enfin, le titre et le sous-titre fournis dans la représentation d’affichage de l’entité seront inclus. Prenons un exemple.

    Dans la représentation simplifiée d’un Évènement de calendrier, le titre et les dates de début et de fin seront inclus, ainsi que le nom du type fourni par la représentation d’affichage du type et le titre et le sous-titre fournis dans la représentation d’affichage. Les chaînes définies sur vos entités s’affichent aussi dans l’app Raccourcis lorsque vous inspectez les propriétés d’une entité transmise à une autre action. Vérifiez qu’elles s’affichent correctement à cet emplacement également. Maintenant que nous savons comment structurer les entités, vérifions qu’il existe un moyen de les transmettre au modèle. Il s’agit ici des entités du calendrier à filtrer. Dans Raccourcis, le moyen le plus courant d’obtenir des entités est d’utiliser une action Rechercher. Ce type d’action permet d’obtenir des entités à partir de votre app en les filtrant selon leurs propriétés, par exemple la date de début d’un évènement ou le calendrier où il est consigné. Vous pouvez créer une action Rechercher en implémentant vos requêtes conformes aux protocoles EnumerableEntityQuery et EntityPropertyQuery. Si vous avez déjà intégré les entités de votre app à Core Spotlight avec le protocole IndexedEntity, vous pouvez adopter de nouvelles API pour associer les propriétés Entités d’app à leurs clés d’attribut Spotlight afin que le système génère automatiquement une action Rechercher. Reprenons l’exemple d’Entité évènement de tout à l’heure. L’Entité évènement est déjà conforme au protocole IndexedEntity. Le titre, le sous-titre et l’image de la représentation d’affichage seront automatiquement associés à leurs clés d’attribut Spotlight respectives.

    Afin d’associer les propriétés de votre entité à la clé d’attribut correspondante sur l’Entité Spotlight, vous pouvez utiliser le nouveau paramètre de clé d’indexation. Ici, la propriété Titre de l’évènement est associée à la clé d’attribut Titre de l’évènement de Spotlight.

    Dans certains cas, il n’existe pas de clé d’attribut correspondante. Vous pouvez alors utiliser le paramètre de clé d’indexation personnalisée sur la propriété pour spécifier une clé personnalisée : je l’ai fait ici avec la propriété Notes. Voici l’action Rechercher qui sera disponible dans l’app Raccourcis en fonction de l’Entité indexée. Vous pouvez consulter App Intents de l’app Suivi de voyage disponible sur developer.apple.com pour un autre exemple. Voilà tout ce que vous devez savoir pour structurer les entités de votre app et les fournir au modèle. Maintenant, découvrons une autre chose que l’on peut faire avec l’action Utiliser le modèle. Cette action offre la possibilité de faire un « follow-up » sur la requête, afin de provoquer des allers-retours avec le modèle jusqu’à obtenir la sortie souhaitée et la transmettre à l’action suivante. Je vais vous montrer comment faire. Comme j’essaie de cuisiner davantage, j’ai créé un raccourci pour extraire rapidement la liste des ingrédients d’une recette à l’aide d’un modèle et l’ajouter à ma liste de courses dans l’app Things. En activant le bouton Suivi, j’ai la possibilité de revenir à ma requête initiale et d’y apporter des modifications. Par exemple, je peux demander au modèle de modifier la recette avant d’enregistrer les ingrédients. Maintenant, jetons un œil à une recette de pizza qui m’intéresse dans Safari. Voici une recette de pizza napolitaine qu’un ami m’a envoyée. Ça a l’air délicieux. Je vais utiliser mon raccourci pour enregistrer les ingrédients dans ma liste de courses.

    Très bien, il me faut donc 400 g de farine 00, 100 g de farine complète, un peu de levure et du sel. Parfait, ça a l’air très bien. En fait, j’organise une soirée pizza, donc je vais augmenter les quantités.

    Comme j’avais activé Suivi, un champ de texte permet d’ajouter des infos supplémentaires. Je vais demander : « Doublez la recette ».

    Très bien, j’ai donc besoin de 800 g de farine 00 et de 200 g de farine complète. OK, c’est parfait.

    Et voici les ingrédients pour ma soirée pizza dans l’app Things. Voilà votre nouvelle action Utiliser le modèle. Maintenant, jetons un œil à Spotlight sur Mac.

    Spotlight permet de rechercher des apps et des documents sur l’ensemble du système. Cette année, vous pouvez désormais exécuter des actions de votre app directement dans Spotlight sur Mac. Vos apps peuvent afficher des actions dans Spotlight en adoptant des App Intents, comme avec Raccourcis. Les bonnes pratiques de conception d’App Intents pour Raccourcis s’appliquent directement à Spotlight, y compris la rédaction d’un excellent résumé des paramètres. Un résumé des paramètres est une brève description en langage naturel de ce que fait l’App Intent, y compris les paramètres nécessaires à son exécution.

    Ce même résumé des paramètres s’affiche dans l’éditeur de raccourcis lorsque vous créez un raccourci. Spotlight est conçu pour exécuter rapidement des tâches. Pour cela, vous devez pouvoir fournir toutes les informations nécessaires à l’exécution de votre intent directement dans Spotlight. Je vais expliquer comment procéder. Tout d’abord, le résumé des paramètres, qui est ce que l’on voit dans l’UI Spotlight, doit contenir tous les paramètres obligatoires n’ayant pas de valeur par défaut. Si votre intent ne comporte aucun paramètre de ce type, vous n’avez pas besoin de fournir de résumé des paramètres. Spotlight peut alors afficher le titre de l’intent à la place. Ensuite, vous devez vous assurer que l’intent n’est pas masquée pour Raccourcis dans Spotlight. Par exemple, vérifiez que « est détectable » est défini sur oui et que « assistant uniquement » est désactivé dans votre intent. Si vous avez déjà adopté une intent pour la configuration d’un widget qui ne dispose pas d’une méthode perform, celle-ci n’apparaîtra pas non plus dans Spotlight. Examinons quelques exemples.

    J’ai une intent appelée CreateEventIntent que l’on peut utiliser pour créer un évènement dans le calendrier. Elle comporte actuellement trois paramètres : un titre, une date de début et une date de fin. Cette intent apparaîtra dans Spotlight, car tous ses paramètres obligatoires figurent dans le résumé des paramètres. Cependant, si j’ajoute un nouveau paramètre Notes comme paramètre obligatoire sans valeur par défaut et que je ne l’ajoute pas au résumé des paramètres, l’intent n’apparaîtra plus dans Spotlight. Si je mets à jour le paramètre Notes et le rend facultatif, l’intent apparaîtra à nouveau dans Spotlight.

    Je peux aussi laisser le paramètre obligatoire et indiquer une valeur par défaut, comme une chaîne vide dans ce cas.

    Pour connaître les bonnes pratiques de conception des résumés de paramètres, comme ceux à rendre facultatifs, regardez la vidéo « Design App Intents for system experiences ». Une fois que votre intent s’affiche dans Spotlight, vous devez optimiser l’expérience utilisateur. Cela inclut la prise en charge des suggestions, la recherche par saisie et les options d’exécution en arrière-plan et au premier plan. Regardons cela. Lorsqu’un utilisateur recherche et sélectionne votre intent dans Spotlight, il doit remplir les paramètres requis avant de l’exécuter. Afin de rendre cette interaction rapide, vous devez fournir des suggestions pour remplir ces paramètres. Il existe plusieurs protocoles qui peuvent être appliqués pour cela.

    Vous pouvez implémenter Entités suggérées dans le cadre du protocole EntityQuery, ou toutes les entités pour le protocole EnumerableEntityQuery. Il est conseillé d’utiliser les entités suggérées s’il existe un sous-ensemble dans une liste d’entités très longue ou illimitée, par exemple la liste des évènements de calendrier du lendemain au lieu de tous les évènements passés et présents. L’option Toutes les entités est idéale si la liste d’entités est plus courte et délimitée, comme une liste de fuseaux horaires. Vous pouvez aussi baliser le contenu à l’écran en définissant la propriété AppEntityIdentifier sur NSUserActivity pour fournir des suggestions selon l’entité ou le contenu actuellement actif. Par exemple, la vue détaillée d’un évènement de calendrier spécifique. Pour en savoir plus sur cette API, consultez la session « Exploring new advances in App Intents ». Enfin, votre intent peut aussi adopter le protocole Predictable Intent afin que Spotlight affiche des suggestions selon l’utilisation de l’intent. Ensuite, examinons l’expérience utilisateur lorsque l’on se met à saisir du texte dans un champ de paramètre. Si vous avez déjà implémenté des suggestions, des fonctionnalités de base sont automatiquement fournies pour rechercher et filtrer vos suggestions. Cependant, s’il existe des entités autres que celles suggérées que l’utilisateur pourrait souhaiter sélectionner, il est conseillé d’ajouter une fonctionnalité de recherche avancée en implémentant des requêtes.

    Vous pouvez implémenter le protocole EntityStringQuery ou IndexedEntity comme nous l’avons vu précédemment. Vous trouverez un exemple d’implémentation du protocole EntityStringQuery dans Exemple de code App Intents sur developer.apple.com. Pour en savoir plus sur le protocole IndexedEntity, consultez la présentation « What’s new in App Intents » de 2024. Ensuite, examinons l’expérience d’exécution de l’action. Concernant la création d’évènement, les utilisateurs souhaitent parfois que l’action s’exécute en arrière-plan pour plus de rapidité, mais dans d’autres cas, il est préférable de voir l’évènement créé dans l’app elle-même. Pour prendre en charge ces deux types d’expérience, vous pouvez séparer vos intents : intents d’arrière-plan et d’avant-plan, selon le cas. Par exemple, nous pourrions avoir une intent « créer un évènement » en arrière-plan afin de créer des évènements de calendrier en arrière-plan sans ouvrir l’app. Nous pouvons également avoir une intent « ouvrir l’évènement » qui affiche l’app au premier plan en ouvrant un évènement spécifique, ce qui est une action utile. Nous pouvons ensuite combiner ces deux intents, en demandant à l’intent d’arrière-plan de retourner l’intent d’avant-plan en tant qu’intent Ouvre. Dans ce cas, l’intent Créer l’évènement peut retourner l’intent Ouvrir l’évènement en tant qu’intent Ouvre. Pour en savoir plus, regardez la vidéo « Dive into App Intents ». Et voilà pour Spotlight sur Mac. Passons maintenant aux Automatisations. Cette année, nous introduisons les automatisations personnelles sur Mac avec de nouveaux types d’automatisation tels que les automatisations de dossiers et de disques externes pour Mac, et des types d’automatisation que vous connaissez peut-être sur iOS, comme Time of Day et le Bluetooth. Par exemple, je peux faire en sorte que le raccourci de traitement des factures créé précédemment s’exécute chaque fois que j’ajoute une nouvelle facture à un dossier spécifique, sans le lancer manuellement. Tant que votre intent est disponible sur macOS, elle pourra également être utilisée dans Raccourcis pour s’exécuter avec Automatisations sur Mac. Cela inclut les apps iOS qui peuvent être installées sur macOS.

    Spotlight et Automatisations sur Mac viennent s’ajouter aux nombreuses façons d’exécuter Raccourcis, comme le bouton Action, le centre de contrôle, et bien plus. Avec l’ajout de nouvelles actions intelligentes comme Utiliser le modèle, les possibilités d’utilisation des actions de votre app dans le système sont infinies. Terminons en énonçant les étapes suivantes. D’abord, exposez le contenu de votre app sous forme d’entités qui fonctionnent bien avec Raccourcis, comme l’action Utiliser le modèle. Cela signifie que vous devez exposer les actions Rechercher et vous assurer que les entités exposent les propriétés clés que vous souhaitez qu’un modèle traite. Ensuite, utilisez des chaînes attribuées pour permettre le transfert de Texte enrichi vers vos apps, comme dans la démo avec l’app Bear. Enfin, optimisez vos intents pour Spotlight sur Mac et assurez-vous qu’elles s’affichent correctement dans Raccourcis. Merci de votre attention !

    • 0:00 - Introduction
    • Le framework App Intents rend les apps plus visibles sur toutes les plateformes Apple, ce qui permet aux utilisateurs et utilisatrices d’intégrer les fonctionnalités des apps dans Raccourcis et Spotlight. L’app Raccourcis automatise les tâches en connectant les apps, et Apple Intelligence est désormais intégrée pour simplifier la création de raccourcis. Vous pouvez utiliser App Intents pour que vos apps fonctionnent avec Raccourcis et Spotlight. Les nouvelles fonctionnalités permettent entre autres d’exécuter Raccourcis à partir de Spotlight sur Mac et d’utiliser des modèles Apple Intelligence dans les raccourcis.

    • 1:16 - Utiliser le modèle
    • La nouvelle action Utiliser le modèle dans Raccourcis simplifie les tâches complexes grâce à des modèles de langage. Les personnes peuvent choisir entre des modèles basés sur un serveur, sur l’appareil ou ChatGPT pour diverses demandes, par exemple pour filtrer des évènements du calendrier, résumer un contenu Web ou organiser des notes. Cette action peut générer différents types de résultats, notamment des sorties Texte, Dictionnaire et Contenu à partir des apps. Les sorties Texte peuvent être du texte enrichi, par conséquent assurez-vous que vos apps prennent en charge les chaînes attribuées afin de préserver la mise en forme. La sortie Dictionnaire est utile pour les données structurées, car elle permet par exemple d’extraire des informations présentes sur des factures et de les copier dans des feuilles de calcul. La sortie Contenu issue d’apps permet de travailler avec des entités d’app définies à l’aide du framework App Intents, ce qui facilite l’intégration transparente entre différentes apps et les modèles de langage. L’action Rechercher de l’app Raccourcis est couramment utilisée pour récupérer des entités en fonction de leurs propriétés. Vous pouvez implémenter des actions Rechercher en vous conformant à des protocoles spécifiques ou en associant les propriétés des entités d’app à des clés d’attribut Core Spotlight. L’action Utiliser le modèle permet d’interagir avec la sortie du modèle. Par exemple, une personne peut extraire les ingrédients d’une recette, puis utiliser la fonctionnalité Suivi pour modifier la requête. Elle peut par exemple doubler les quantités indiquées dans la recette, puis enregistrer les ingrédients nécessaires dans une app de liste de courses.

    • 11:40 - Spotlight sur Mac
    • Spotlight sur Mac est une fonctionnalité de recherche très efficace, qui permet de trouver des apps et des documents sur l’ensemble de leur système. Cette mise à jour permet d’exécuter des actions directement à partir de Spotlight, pour plus d’efficacité. Vous pouvez faire cela dans vos apps en utilisant App Intents, qui permet aux apps d’afficher des actions dans Spotlight. Pour optimiser l’expérience des utilisateurs et utilisatrices, suivez ces bonnes pratiques : Fournissez des suggestions pour renseigner les paramètres. Implémentez une fonctionnalité de recherche. Prenez en charge les options d’exécution en arrière-plan et au premier plan. Associez les intents d’arrière-plan aux intents de premier plan pour offrir une expérience fluide.

    • 17:18 - Automatisations sur Mac
    • Cette mise à jour Mac introduit des automatisations personnelles, permettant aux utilisateurs et utilisatrices de créer des raccourcis déclenchés par des évènements spécifiques, tels que des modifications dans les dossiers ou des connexions Bluetooth. Ces automatisations peuvent utiliser les raccourcis iOS existants et les intents des apps macOS, améliorant ainsi l’efficacité à l’échelle du système. Optimisez vos apps pour Spotlight et Raccourcis, afin d’intégrer du texte enrichi et des actions plus intelligentes.

Developer Footer

  • Vidéos
  • WWDC25
  • Développez pour Raccourcis et Spotlight avec App Intents
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Store
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Sample Code
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright © 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines