View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Vidéos

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

Plus de vidéos

  • À propos
  • Résumé
  • Code
  • Découvrez les améliorations de votre app d’entreprise spatiale

    Découvrez comment les dernières améliorations et API de visionOS 26 élargissent l'accès et étendent les capacités d'entreprise annoncées l'année dernière. Apprenez comment ces nouvelles fonctionnalités facilitent la création de workflows d'entraînement de modèles, améliorent les flux vidéo et vous permettent d'aligner les systèmes de coordonnées sur un réseau local afin de développer des expériences collaboratives dans votre app interne.

    Chapitres

    • 0:04 - Introduction
    • 1:37 - Simplifier le développement
    • 4:54 - Améliorer l’expérience utilisateur
    • 13:37 - Visualiser l’environnement
    • 24:01 - Étapes suivantes

    Ressources

    • Implementing object tracking in your visionOS app
    • Building spatial experiences for business apps with enterprise APIs for visionOS
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC25

    • Partagez des expériences visionOS avec des personnes à proximité

    WWDC24

    • Create enhanced spatial computing experiences with ARKit
    • Explore object tracking for visionOS
    • Introducing enterprise APIs for visionOS
  • Rechercher dans cette vidéo…
    • 3:00 - createml on the Mac command line

      xcrun createml objecttracker -s my.usdz -o my.referenceobject
    • 4:28 - VisionEntitlementServices

      import VisionEntitlementServices
      
      func checkLicenseStatus() {
          // Get the shared license details instance
          let license = EnterpriseLicenseDetails.shared
      
          // First, you might check the overall license status
          guard license.licenseStatus == .valid else {
              print("Enterprise license is not valid: \(license.licenseStatus)")
              // Optionally disable enterprise features or alert the user
              return
          }
      
          // Then, check for a specific entitlement before using the feature
          if license.isApproved(for: .mainCameraAccess) {
              // Safe to proceed with using the main camera API
              print("Main Camera Access approved. Enabling feature...")
              // ... enable camera functionality ...
          } else {
              // Feature not approved for this license
              print("Main Camera Access not approved.")
              // ... keep feature disabled, potentially inform user ...
          }
      }
    • 10:04 - SharedCoordinateSpaceModel

      //
      //  SharedCoordinateSpaceModel.swift
      //
      
      import ARKit
      
      class SharedCoordinateSpaceModel {
          let arkitSession = ARKitSession()
          let sharedCoordinateSpace = SharedCoordinateSpaceProvider()
          let worldTracking = WorldTrackingProvider()
      
          func runARKitSession() async {
              do {
                  try await arkitSession.run([sharedCoordinateSpace, worldTracking])
              } catch {
                  reportError("Error: running session: \(error)")
              }
          }
      
          // Push data received from other participants
          func pushCoordinateSpaceData(_ data: Data) {
              if let coordinateSpaceData = SharedCoordinateSpaceProvider.CoordinateSpaceData(data: data) {
                  sharedCoordinateSpace.push(data: coordinateSpaceData)
              }
          }
      
          // Poll data to be sent to other participants
          func pollCoordinateSpaceData() async {
              if let coordinateSpaceData = sharedCoordinateSpace.nextCoordinateSpaceData {
                  // Send my coordinate space data
              }
          }
      
          // Be notified when participants connect or disconnect from the shared coordinate space
          func processEventUpdates() async {
              let participants = [UUID]()
              for await event in sharedCoordinateSpace.eventUpdates {
                  switch event {
                      // Participants changed
                  case .connectedParticipantIdentifiers(participants: participants):
                      // handle change
                      print("Handle change in participants")
                  case .sharingEnabled:
                      print("sharing enabled")
                  case .sharingDisabled:
                      print("sharing disabled")
                  @unknown default:
                      print("handle future events")
                  }
              }
          }
      
          // Be notified when able to add shared world anchors
          func processSharingAvailabilityUpdates() async {
              for await sharingAvailability in worldTracking.worldAnchorSharingAvailability
                  where sharingAvailability == .available {
                  // Able to add anchor
              }
          }
          // Add shared world anchor
          func addWorldAnchor(at transform: simd_float4x4) async throws {
              let anchor = WorldAnchor(originFromAnchorTransform: transform, sharedWithNearbyParticipants: true)
              try await worldTracking.addAnchor(anchor)
          }
      
          // Process shared anchor updates from local session and from other participants
          func processWorldTrackingUpdates() async {
              for await update in worldTracking.anchorUpdates {
                  switch update.event {
                  case .added, .updated, .removed:
                      // Handle anchor updates
                      print("Handle updates to shared world anchors")
                  }
              }
          }
      }
    • 12:50 - contentCaptureProtected

      // Example implementing contentCaptureProtected
      
      struct SecretDocumentView: View {
          var body: some View {
              VStack {
                  Text("Secrets")
                      .font(.largeTitle)
                      .padding()
      
                  SensitiveDataView()
                      .contentCaptureProtected()
              }
              .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
          }
      }
    • 16:48 - CameraRegionView

      //
      //  InspectorView.swift
      //
      
      import SwiftUI
      import VisionKit
      
      struct InspectorView: View {
          @Environment(CameraFeedDelivery.self) private var cameraFeedDelivery: CameraFeedDelivery
      
          var body: some View {
              CameraRegionView(isContrastAndVibrancyEnhancementEnabled: true) { result in
                  var pixelBuffer: CVReadOnlyPixelBuffer?
                  switch result {
                  case .success(let value):
                      pixelBuffer = value.pixelBuffer
                  case .failure(let error):
                      reportError("Failure: \(error.localizedDescription)")
                      cameraFeedDelivery.stopFeed()
                      return nil
                  }
      
                  cameraFeedDelivery.frameUpdate(pixelBuffer: pixelBuffer!)
                  return nil
              }
          }
      }
      
      @main
      struct EnterpriseAssistApp: App {
          var body: some Scene {
              WindowGroup {
                  ContentView()
              }
      
              WindowGroup(id: "InspectorView") {
                  InspectorView()
              }
              .windowResizability(.contentSize)
          }
      }
    • 21:15 - CameraRegionAnchor

      class CameraRegionHandler {
          let arkitSession = ARKitSession()
          var cameraRegionProvider: CameraRegionProvider?
          var cameraRegionAnchor: CameraRegionAnchor?
      
          func setUpNewAnchor(anchor: simd_float4x4, width: Float, height: Float) async {
              let anchor = CameraRegionAnchor(originFromAnchorTransform: anchor,
                                              width: width,
                                              height: height,
                                              cameraEnhancement: .stabilization)
      
              guard let cameraRegionProvider = self.cameraRegionProvider else {
                  reportError("Missing CameraRegionProvider")
                  return
              }
      
              do {
                  try await cameraRegionProvider.addAnchor(anchor)
              } catch {
                  reportError("Error adding anchor: \(error)")
              }
              cameraRegionAnchor = anchor
      
              Task {
                  let updates = cameraRegionProvider.anchorUpdates(forID: anchor.id)
                  for await update in updates {
                      let pixelBuffer = update.anchor.pixelBuffer
                      // handle pixelBuffer
                  }
              }
          }
      
          func removeAnchor() async {
              guard let cameraRegionProvider = self.cameraRegionProvider else {
                  reportError("Missing CameraRegionProvider")
                  return
              }
      
              if let cameraRegionAnchor = self.cameraRegionAnchor {
                  do {
                      try await cameraRegionProvider.removeAnchor(cameraRegionAnchor)
                  } catch {
                      reportError("Error removing anchor: \(error.localizedDescription)")
                      return
                  }
                  self.cameraRegionAnchor = nil
              }
          }
      }
    • 0:04 - Introduction
    • L’année dernière, Apple a introduit les API d’entreprise, et cette année, il y a une foule de nouvelles fonctionnalités et d’améliorations. Ces API, conçues pour les apps internes propriétaires, nécessitent des droits gérés et des fichiers de licence. Les mises à jour visent à simplifier le développement, améliorer l’expérience utilisateur et permettre de nouvelles visualisations d’environnement.

    • 1:37 - Simplifier le développement
    • visionOS évolue et donne aux développeurs un accès élargi aux API. Les nouveautés majeures incluent un meilleur accès aux API, un suivi d’objets optimisé et une gestion des licences d’entreprise simplifiée. Plusieurs API introduites l’an dernier, comme celles dédiées à l’accès aux webcams UVC et au Neural Engine, sont désormais accessibles à tous les développeurs, sans licence d’entreprise. Vous pouvez maintenant entraîner vos modèles de suivi d’objet en ligne de commande, avec intégration directe aux pipelines existants. Les fichiers de licence sont accessibles depuis le compte Apple Developer, les renouvellements sont automatiques, et un nouveau framework permet aux développeurs de vérifier le statut des licences et les autorisations d’app pour certaines fonctionnalités.

    • 4:54 - Améliorer l’expérience utilisateur
    • Plusieurs nouveautés de visionOS 26 enrichissent l’expérience utilisateur dans les apps spatiales. Parmi elles, le mode Suivi de fenêtre, qui permet à une fenêtre de suivre l’utilisateur dans son environnement spatial. Idéal pour les tâches où l’on doit consulter souvent des infos tout en se déplaçant. Pour activer ce mode, vous devez demander et gérer un droit de licence spécifique. L’informatique spatiale s’améliore aussi côté collaboration. Les espaces de coordonnées partagés offrent une expérience spatiale commune aux personnes réunies physiquement. Chacun peut interagir avec le contenu de l’app comme s’il était réellement présent. Vous pouvez utiliser SharePlay pour une configuration simple, ou opter pour un contrôle avancé grâce à la nouvelle API ARKit SharedCoordinateSpaceProvider, réservée aux clients entreprise. Cette API permet à plusieurs participants d’aligner leurs systèmes de coordonnées et de partager des données via un réseau local choisi, afin de créer un système commun pour les ancres partagées. La confidentialité et la sécurité des données restent une priorité absolue, en particulier pour les applications d’entreprise traitant des informations sensibles. Une nouvelle API appelée contentCaptureProtected permet de marquer des éléments d’interface ou des scènes entières comme protégés. Le système masque alors automatiquement ce contenu protégé dans les captures d’écran, enregistrements, vues en miroir ou sessions partagées, garantissant que les données sensibles ne soient visibles que par l’utilisateur portant l’appareil.

    • 13:37 - Visualiser l’environnement
    • Le nouveau visionOS rapproche encore plus les mondes physique et numérique avec l’Apple Vision Pro. Le système de caméra a été étendu, vous offrant un accès plus large aux caméras de l’appareil via l’API CameraFrameProvider d’ARKit. Cette fonctionnalité permet aux apps d’exploiter les flux de caméra aussi bien dans des environnements immersifs que partagés. Une nouvelle fonctionnalité permet aux utilisateurs d’agrandir et d’améliorer certaines zones de leur vue réelle. Avec CameraRegionView de VisionKit, les développeurs peuvent créer des fenêtres pour afficher des zones ciblées afin de mieux voir les détails importants. Cette fonctionnalité est particulièrement utile pour les professionnels, comme les techniciens ou les inspecteurs, qui doivent surveiller de petits éléments dans des zones faiblement éclairées. Vous pouvez implémenter cette fonctionnalité en quelques lignes de code SwiftUI seulement, en utilisant les API CameraRegionView et CameraRegionProvider. Ces API proposent des options de traitement intégrées, comme l’amélioration du contraste et de l’éclat, et permettent une analyse et une modification d’image sur mesure, offrant ainsi une grande flexibilité pour divers cas d’usage. La fonctionnalité Camera Regions d’ARKit améliore le flux de caméra pass-through sur Apple Vision Pro, en l’appliquant à des zones spécifiques définies par des fenêtres virtuelles appelées CameraRegionAnchors. Vous pouvez créer ces ancres en spécifiant leur position, leur orientation et leur taille dans le monde réel. ARKit fournit ensuite des tampons de pixels stabilisés et améliorés pour ces zones. Cette fonctionnalité permet de zoomer et de déplacer l’image, et ajuste dynamiquement la fréquence d’image en fonction de l’algorithme d’amélioration sélectionné. Tenez compte de l’utilisation des ressources, car des zones de caméra plus grandes peuvent affecter la mémoire et les performances de traitement.

    • 24:01 - Étapes suivantes
    • Pour des résultats optimaux dans les apps professionnelles sur Apple Vision Pro, privilégiez la sécurité, respectez la vie privée en ne collectant que les données nécessaires, assurez-vous que les apps répondent aux critères d’éligibilité (usage interne ou B2B personnalisé) et ne demandez que les droits d’accès strictement requis pour les fonctionnalités ciblées.

Developer Footer

  • Vidéos
  • WWDC25
  • Découvrez les améliorations de votre app d’entreprise spatiale
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & 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
    • Mini Apps Partner 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
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines