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
 

Videos

Abrir menú Cerrar menú
  • Colecciones
  • Todos los videos
  • Información

Más videos

  • Información
  • Resumen
  • Código
  • Comparte experiencias de visionOS con personas cercanas

    Aprende a crear experiencias compartidas para personas que usan Vision Pro en la misma habitación. Te mostraremos cómo integrar SharePlay y aprovechar ARKit en tu app, presentaremos los flujos de uso compartido de ventanas para participantes cercanos y de FaceTime, y abarcaremos una nueva API diseñada para una colaboración fluida. Descubre las recomendaciones para hacer que tus funcionalidades colaborativas se destaquen, sean detectables y atractivas para los que se encuentran cerca.

    Capítulos

    • 0:00 - Introducción
    • 0:56 - Más información sobre compartir con participantes cercanos
    • 4:21 - Desarrolla actividades cercanas
    • 5:35 - Permite compartir desde el menú Compartir
    • 9:15 - Mejora para los participantes cercanos
    • 10:37 - Coloca el contenido en relación con las personas
    • 13:20 - Coordina la reproducción de medios compartidos
    • 15:38 - Admite múltiples ventanas
    • 16:50 - Comparte contenido anclado

    Recursos

    • worldAnchorSharingAvailability
    • groupActivityAssociation(_:)
    • init(originFromAnchorTransform:sharedWithNearbyParticipants:)
    • Configure your visionOS app for sharing with people nearby
    • AVPlaybackCoordinator
    • Building a guessing game for visionOS
      • Video HD
      • Video SD

    Videos relacionados

    WWDC25

    • Explorar las mejoras de la app empresarial espacial

    WWDC24

    • Customize spatial Persona templates in SharePlay

    WWDC23

    • Build spatial SharePlay experiences
    • Create a great spatial playback experience

    WWDC21

    • Build custom experiences with Group Activities
    • Coordinate media experiences with Group Activities
  • Buscar este video…
    • 6:21 - Expose an activity with GroupActivities and SwiftUI

      // Expose an activity with GroupActivities and SwiftUI
      
      import SwiftUI
      import GroupActivities
      
      struct BoardGameActivity: GroupActivity, Transferable {
          var metadata: GroupActivityMetadata = {
              var metadata = GroupActivityMetadata()
              metadata.title = "Play Together"
              return metadata
          }()
      }
      
      struct BoardGameApp: App {
          var body: some Scene {
              WindowGroup {
                  BoardGameView()
                  ShareLink(item: BoardGameActivity(), preview: SharePreview("Play Together"))
                      .hidden()
              }
              .windowStyle(.volumetric)
          }
      }
      
      struct BoardGameView: View {
          var body: some View {
              // Board game content
          }
      }
    • 7:14 - Join a GroupSession with GroupActivities

      // Join a GroupSession with GroupActivities
      
      func observeSessions() async {
      
          // Sessions are created automatically when the activity is activated
          for await session in BoardGameActivity.sessions() {
      
              // Additional configuration and setup
      
              // Join SharePlay
              session.join()
          }
      }
    • 8:57 - Join and configure a GroupSession with GroupActivities

      // Join a GroupSession with GroupActivities
      
      func observeSessions() async {
      
          // Sessions are created automatically when the activity is activated
          for await session in BoardGameActivity.sessions() {
      
              // Additional configuration and setup
      
              guard let systemCoordinator = await session.systemCoordinator else { continue }
              systemCoordinator.configuration.supportsGroupImmersiveSpace = true
      
              // Join SharePlay
              session.join()
          }
      }
    • 9:59 - Check for nearby participants with GroupActivities

      // Check for nearby participants with GroupActivities
      
      func observeParticipants(session: GroupSession<BoardGameActivity>) async {
          for await activeParticipants in session.$activeParticipants.values {
              let nearbyParticipants = activeParticipants.filter {
                  $0.isNearbyWithLocalParticipant && $0 != session.localParticipant
              }
          }
      }
    • 11:42 - Observe local participant pose with GroupActivities

      // Observe local participant pose with GroupActivities
      
      func observeLocalParticipantState(session: GroupSession<BoardGameActivity>) async {
          guard let systemCoordinator = await session.systemCoordinator else { return }
      
          for await localParticipantState in systemCoordinator.localParticipantStates {
              let localParticipantPose = localParticipantState.pose
              // Place presented content relative to the local participant pose
          }
      }
    • 15:54 - Associate a specific window with GroupActivities and SwiftUI

      // Associate a specific window with GroupActivities and SwiftUI
      
      import SwiftUI
      import GroupActivities
      
      struct BoardGameApp: App {
          var body: some Scene {
              WindowGroup {
                  BoardGameView()
                  ShareLink(item: BoardGameActivity(), preview: SharePreview("Play Together"))
                      .hidden()
              }
              .windowStyle(.volumetric)
              
              WindowGroup(id: "InstructionalVideo") {
                  InstructionalVideoView()
                      .groupActivityAssociation(.primary("InstructionalVideo"))
              }
          }
      }
      
      struct BoardGameView: View {
          var body: some View {
              // Board game content
          }
      }
      
      struct InstructionalVideoView: View {
          var body: some View {
              // Video content
          }
      }
    • 18:27 - Create a world anchor with ARKit

      // Create a world anchor with ARKit
      
      import ARKit
      
      class AnchorController {
      
          func setUp(session: ARKitSession, provider: WorldTrackingProvider) async throws {
              try await session.run([provider])
          }
      
          func createAnchor(at transform: simd_float4x4, provider: WorldTrackingProvider) async throws {
              let anchor = WorldAnchor(originFromAnchorTransform: transform)
              try await provider.addAnchor(anchor)
          }
      
          func observeWorldTracking(provider: WorldTrackingProvider) async {
             for await update in provider.anchorUpdates {
                  switch update.event {
                  case .added, .updated, .removed:
                      // Add, update, or remove furniture
                      break
                  }
              }
          }
      }
    • 20:02 - Observe sharing availability with ARKit

      // Observe sharing availability with ARKit
      
      func observeSharingAvailability(provider: WorldTrackingProvider) async {
          for await sharingAvailability in provider.worldAnchorSharingAvailability {
               if sharingAvailability == .available {
                   // Store availability to check when creating a new shared world anchor
               }
           }
      }
    • 20:24 - Create a shared world anchor with ARKit

      // Create a shared world anchor with ARKit
      
      import ARKit
      
      class SharedAnchorController {
          
          func setUp(session: ARKitSession, provider: WorldTrackingProvider) async throws {
              try await session.run([provider])
          }
      
          func createAnchor(at transform: simd_float4x4, provider: WorldTrackingProvider) async throws {
              let anchor = WorldAnchor(originFromAnchorTransform: transform,
                                       sharedWithNearbyParticipants: true)
              try await provider.addAnchor(anchor)
          }
      
          func observeWorldTracking(provider: WorldTrackingProvider) async {
             for await update in provider.anchorUpdates {
                  switch update.event {
                  case .added, .updated, .removed:
                      // Add, update, or remove furniture. Updates with shared anchors from others!
                      let anchorIdentifier = update.anchor.id
                  }
              }
          }
      }
    • 0:00 - Introducción
    • En visionOS 26, las personas que usan FaceTime pueden compartir apps y experiencias con personas cercanas que usen Apple Vision Pro. Esto significa que puedes ver, escuchar e interactuar de forma colaborativa en el mismo espacio físico utilizando SharePlay y ARKit.

    • 0:56 - Más información sobre compartir con participantes cercanos
    • Una nueva función para compartir en visionOS 26 permite a las personas compartir apps fácilmente con personas cercanas tocando el botón a la derecha de la barra de la ventana. La ventana compartida aparece en la misma ubicación física para todos en la sala, lo que crea un contexto compartido donde las personas pueden discutir, señalar e interactuar con la app como si fuera tangible. El sistema garantiza una apariencia y tamaño consistentes para todos. Cualquiera puede mover o cambiar el tamaño de la ventana y estos cambios se reflejan para todos. Los usuarios remotos pueden unirse a la sesión compartida a través de FaceTime en visionOS, apareciendo como Personas espaciales dentro del espacio compartido, o como transmisiones de video junto a la ventana compartida si se unen desde iOS o macOS, lo que permite una colaboración fluida independientemente de la ubicación.

    • 4:21 - Desarrolla actividades cercanas
    • Cualquier app SharePlay en visionOS se puede compartir con personas cercanas, sin realizar cambios. Sin embargo, hay nuevas funciones que puedes usar para mejorar las experiencias de SharePlay específicamente para las personas en el mismo espacio. Incluyen lo siguientes: hacer que las actividades de SharePlay sean detectables en el nuevo menú Compartir, detectar participantes cercanos, posicionar contenido según sus poses y sincronizar la reproducción de medios.

    • 5:35 - Permite compartir desde el menú Compartir
    • En visionOS 26, puedes habilitar SharePlay en tus apps exponiendo una GroupActivity usando SwiftUI o API UIKit. Cuando está habilitado, las personas pueden iniciar SharePlay directamente desde el nuevo menú Compartir. Para las ventanas volumétricas, se debe exponer una actividad para que se pueda utilizar el menú Compartir. Para espacios inmersivos, donde el menú Compartir tradicional es inaccesible, puedes proporcionar un botón en la app para activar el menú Compartir. Como alternativa, ofrecer un modo no inmersivo permite a las personas compartir desde el menú Compartir y luego pasar al modo inmersivo una vez que todos se hayan unido a la sesión.

    • 9:15 - Mejora para los participantes cercanos
    • Utilice la API SharePlay para identificar a los participantes cercanos en una sesión grupal. Al observar al publicador de participantes activos y verificar la propiedad 'isNearbyWithLocalParticipant', puede diferenciar entre usuarios locales y remotos. Este enfoque permite funciones como la formación automática de equipos de jugadores cercanos en juegos para jugar en persona contra participantes remotos que se unen a través de FaceTime.

    • 10:37 - Coloca el contenido en relación con las personas
    • La nueva propiedad 'pose' en 'ParticipantState' le proporciona la ubicación espacial de los participantes en una sesión de app, lo que le permite colocar contenido de forma dinámica junto a cada persona. Esto mejora la experiencia de inmersión y permite funciones más avanzadas, como guiar a las personas a sus posiciones de asiento óptimas.

    • 13:20 - Coordina la reproducción de medios compartidos
    • En visionOS 26, AVPlayer se mejoró para sincronizar la reproducción de audio y video para personas en el mismo espacio físico, solucionando problemas causados por retrasos en el audio y eco. Esta nueva función permite experiencias multimedia compartidas sin interrupciones, donde todos ven y escuchan el contenido simultáneamente. Puede utilizar 'AVPlaybackCoordinator' para lograr esta sincronización precisa.

    • 15:38 - Admite múltiples ventanas
    • Al utilizar la nueva API SharePlay en visionOS 26, puede especificar qué 'WindowGroup' dentro de una app está asociado con SharePlay usando el modificador de vista 'groupActivityAssociation'. Este modificador de vista permite cambiar sin problemas entre contenidos compartidos, mejorando las experiencias dentro de apps de múltiples ventanas.

    • 16:50 - Comparte contenido anclado
    • ARKit presenta anclajes mundiales compartidos en visionOS 26, lo que permite que las apps coloquen contenido virtual en ubicaciones físicas fijas que permanecen persistentes en todas las sesiones y para múltiples usuarios. Esta persistencia es particularmente útil para apps colaborativas, donde los objetos virtuales necesitan permanecer anclados en el mundo real. Puedes marcar los anclajes mundiales como compartidos durante las sesiones de SharePlay con el nuevo parámetro 'sharedWithNearbyParticipants', lo que permite que los participantes cercanos vean e interactúen con el mismo contenido virtual. Utilice la API 'worldAnchorSharingAvailability' para garantizar que el uso compartido esté disponible. Esta función se extiende más allá de SharePlay y permite que las apps comerciales utilicen anclajes compartidos con capas de red personalizadas. Los anclajes de mundos compartidos abren nuevas posibilidades para experiencias colaborativas, como pizarrones virtuales, juegos inmersivos y noches de películas compartidas, lo que hace que el contenido virtual se sienta más presente e interactivo en el mundo físico.

Developer Footer

  • Videos
  • WWDC25
  • Comparte experiencias de visionOS con personas cercanas
  • 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