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
 

Vídeos

Abrir menu Fechar menu
  • Coleções
  • Todos os vídeos
  • Sobre

Mais vídeos

  • Sobre
  • Resumo
  • Código
  • Compartilhe experiências do visionOS com pessoas próximas

    Saiba como criar experiências compartilhadas para pessoas que usam o Vision Pro no mesmo ambiente. Mostraremos como integrar o SharePlay e aproveitar o ARKit em seu app, apresentaremos os fluxos atualizados de compartilhamento de janelas para participantes próximos e via FaceTime e abordaremos a nova API projetada para colaboração contínua. Descubra as melhores práticas para fazer seus recursos colaborativos se destacarem, serem facilmente descobertos e promoverem o engajamento entre pessoas no mesmo espaço.

    Capítulos

    • 0:00 - Introdução
    • 0:56 - Saber mais sobre o compartilhamento nas proximidades
    • 4:21 - Criar atividades para pessoas próximas
    • 5:35 - Permitir o compartilhamento pelo menu Share
    • 9:15 - Melhorias para usuários próximos
    • 10:37 - Posicionar o conteúdo em relação às pessoas
    • 13:20 - Coordenar a reprodução de mídia compartilhada
    • 15:38 - Compatibilidade com várias janelas
    • 16:50 - Compartilhar conteúdo ancorado

    Recursos

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

    Vídeos relacionados

    WWDC25

    • Explore as melhorias em seu app espacial de negócios

    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 neste vídeo...
    • 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 - Introdução
    • No visionOS 26, as pessoas que usam o FaceTime podem compartilhar apps e experiências com pessoas próximas usando Apple Vision Pro. Isso significa que você pode visualizar, ouvir e interagir de forma colaborativa no mesmo espaço físico usando SharePlay e ARKit.

    • 0:56 - Saber mais sobre o compartilhamento nas proximidades
    • Um novo recurso de compartilhamento no visionOS 26 permite que as pessoas compartilhem facilmente apps com pessoas próximas tocando no botão à direita da barra de janelas. A janela compartilhada aparece no mesmo local físico para todos na sala, criando um contexto compartilhado onde as pessoas podem discutir, apontar e interagir com o app como se fosse tangível. O sistema garante aparência e tamanho consistentes para todos. Qualquer pessoa pode mover ou redimensionar a janela, e essas alterações são refletidas para todos. Usuários remotos entram na sessão de compartilhamento via FaceTime no visionOS como Personas espaciais no espaço compartilhado ou feeds de vídeo ao lado da janela compartilhada se entrarem pelo iOS ou macOS, permitindo colaboração integrada em qualquer lugar.

    • 4:21 - Criar atividades para pessoas próximas
    • Apps SharePlay no visionOS existentes podem ser compartilhados com pessoas próximas, sem precisar de alterações. No entanto, existem novos recursos que podem ser usados para aprimorar as experiências no SharePlay para pessoas que estão no mesmo espaço. Isso inclui: tornar atividades do SharePlay detectáveis no novo menu Compartilhar, detectar participantes próximos, posicionar o conteúdo com base nas posições e sincronizar a reprodução de mídia.

    • 5:35 - Permitir o compartilhamento pelo menu Share
    • No visionOS 26, você pode ativar o SharePlay nos seus apps expondo um GroupActivity usando SwiftUI ou UIKit API. Quando ativado, as pessoas podem iniciar o SharePlay diretamente pelo novo menu Compartilhar. Para janelas volumétricas, uma atividade deve ser exposta para que o menu Share seja utilizável. Para espaços imersivos, onde o menu tradicional Compartilhar está inacessível, você pode fornecer um botão no app para ativar o menu Compartilhar. Como alternativa, oferecer um modo não imersivo permite que as pessoas compartilhem pelo menu Compartilhar e façam a transição para o modo imersivo assim que todos entrarem na sessão.

    • 9:15 - Melhorias para usuários próximos
    • Use a API SharePlay para identificar participantes próximos em um GroupSession. Observando o editor de participantes ativos e verificando a propriedade "isNearbyWithLocalParticipant", você pode diferenciar entre usuários locais e remotos. Essa abordagem permite recursos como a união automática de jogadores próximos em jogos para jogar presencialmente contra participantes remotos que entram pelo FaceTime.

    • 10:37 - Posicionar o conteúdo em relação às pessoas
    • A nova propriedade "pose" em "ParticipantState" fornece a localização espacial dos participantes em uma sessão de app, permitindo que você coloque conteúdo dinamicamente ao lado de cada pessoa. Isso aprimora a experiência imersiva e permite recursos mais avançados, como orientar as pessoas para suas posições ideais de assento.

    • 13:20 - Coordenar a reprodução de mídia compartilhada
    • No visionOS 26, o AVPlayer foi aprimorado para sincronizar a reprodução de áudio e vídeo para pessoas no mesmo espaço físico, resolvendo problemas causados por atrasos e eco de áudio. Esse novo recurso permite experiências perfeitas de mídia compartilhadas, onde todos veem e ouvem o conteúdo simultaneamente. Você pode utilizar "AVPlaybackCoordinator" para alcançar essa sincronização precisa.

    • 15:38 - Compatibilidade com várias janelas
    • Usando a nova API SharePlay no visionOS 26, você pode especificar qual "WindowGroup" em um app está associado ao SharePlay usando o modificador de visualização "groupActivityAssociation". Esse modificador de visualização permite alternar automaticamente entre conteúdos compartilhados, melhorando as experiências em apps com várias janelas.

    • 16:50 - Compartilhar conteúdo ancorado
    • O ARKit apresenta âncoras de mundo compartilhado no visionOS 26, permitindo que os apps coloquem conteúdo virtual em locais físicos fixos que permanecem persistentes em sessões e para vários usuários. Essa persistência é particularmente útil para apps colaborativos, onde objetos virtuais precisam permanecer ancorados no mundo real. Você pode marcar âncoras de mundo como compartilhadas durante sessões do SharePlay com o novo parâmetro "sharedWithNearbyParticipants", permitindo que participantes próximos vejam e interajam com o mesmo conteúdo virtual. Use a API "worldAnchorSharingAvailability" para garantir que o compartilhamento esteja disponível. Esse recurso vai além do SharePlay, permitindo que os apps de negócios utilizem âncoras compartilhadas com camadas de rede personalizadas. As âncoras de mundo compartilhado abrem novas possibilidades para experiências colaborativas, como quadros brancos virtuais, jogos imersivos e noites de cinema compartilhadas, tornando o conteúdo virtual mais presente e interativo no mundo físico.

Developer Footer

  • Vídeos
  • WWDC25
  • Compartilhe experiências do visionOS com pessoas próximas
  • 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