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
  • Mejora la conectividad de los dispositivos con Wi-Fi Aware

    Aprende a crear conexiones de redes entre pares con Wi-Fi Aware. También abarcaremos cómo compartir videos en tiempo real, transferir archivos de gran tamaño y controlar accesorios con un ancho de banda mejorado y una menor latencia. Y aprenderás a usar DeviceDiscoveryUI, AccessorySetupKit y el marco Network para usar Wi-Fi Aware en tu app.

    Capítulos

    • 0:00 - Introducción
    • 1:01 - Descripción general
    • 7:46 - Emparejar
    • 15:05 - Conectar
    • 19:01 - Optimizar
    • 22:26 - Lineamientos

    Recursos

    • Wi-Fi Aware
    • Accessory Design Guidelines
      • Video HD
      • Video SD

    Videos relacionados

    WWDC24

    • Meet AccessorySetupKit
  • Buscar este video…
    • 6:57 - Access capabilities and services

      import WiFiAware
      
      // Check if Wi-Fi Aware is supported on your device
      guard WACapabilities.supportedFeatures.contains(.wifiAware) else { return }
      
      // Publishable service declared in Info.plist
      extension WAPublishableService {
          public static var fileService: WAPublishableService {
              allServices["_file-service._tcp"]!
          }
      }
      
      // Subscribable services declared in Info.plist
      extension WASubscribableService {
          public static var fileService: WASubscribableService {
              allServices["_file-service._tcp"]!
          }
          public static var droneService: WASubscribableService {
              allServices["_drone-service._udp"]!
          }
      }
    • 10:33 - Pair with DeviceDiscoveryUI

      import DeviceDiscoveryUI
      import WiFiAware
      import SwiftUI
      
      // Listener (Publisher) Device
      // Invoke Listener UI
      DevicePairingView(.wifiAware(.connecting(to: .fileService, from: .selected([])))) {
          // Provide a view to display to user before launching System UI
      } fallback: {
          // Provide a view in case of error
      }
      
      // Browser (Subscriber) Device
      // Invoke Browser UI
      DevicePicker(.wifiAware(.connecting(to: .selected([]), from: .fileService))) { endpoint in
          // Process the paired network endpoint
      } label: {
          // Provide a view to display to user before launching System UI
      } fallback: {
          // Provide a view in case of error
      }
    • 12:29 - Pair with AccessorySetupKit

      import AccessorySetupKit
      
      // Configure ASDiscoveryDescriptor (Subscriber)
      let descriptor = ASDiscoveryDescriptor()
      descriptor.wifiAwareServiceName = "_drone-service._udp"
      descriptor.wifiAwareModelNameMatch = .init(string: "Example Model")
      descriptor.wifiAwareVendorNameMatch = .init(string: "Example Inc", compareOptions: .literal)
      let item = ASPickerDisplayItem(name: "My Drone",
                                     productImage: UIImage(named: "DroneProductImage")!,
                                     descriptor: descriptor)
      
      // Create and activate session
      let session = ASAccessorySession()
      session.activate(on: sessionQueue) { event in
          // Closure will execute when device is added with event: .accessoryAdded
          // ASAccessoryWiFiAwarePairedDeviceID can be used to lookup a WAPairedDevice
      }
      // Present Picker UI
      session.showPicker(for: [item]) { error in
          // Handle error
      }
    • 13:51 - Access paired devices

      import Foundation
      import WiFiAware
      
      // WAPairedDevice
      var device: WAPairedDevice // Get using WAPairedDevice.allDevices
      
      // Access WAPairedDevice properties
      let pairingName = device.pairingInfo?.pairingName
      let vendorName = device.pairingInfo?.vendorName
      let modelName = device.pairingInfo?.modelName
      
      // Create a filter to select devices of interest
      let filter = #Predicate<WAPairedDevice> {
          $0.pairingInfo?.vendorName.starts(with: "Example Inc") ?? false
      }
      
      // Get all paired devices, matching the filter, at the current moment
      // A new snapshot of all paired devices each time a device is added, changed, or removed
      for try await devices in WAPairedDevice.allDevices(matching: filter) {
          // Process new snapshot of all paired devices
      }
    • 16:23 - Filter paired devices

      import Foundation
      import WiFiAware
      
      // Listener (Publisher) Device
      // Specify the paired devices of interest for the use case
      let deviceFilter = #Predicate<WAPairedDevice> {
          $0.name?.starts(with: "My Device") ?? false
      }
      
      // Browser (Subscriber) Device
      // Specify the paired devices of interest for the use case
      let deviceFilter = #Predicate<WAPairedDevice> {
          $0.pairingInfo?.vendorName.starts(with: "Example Inc") ?? false
      }
    • 16:54 - Create listener and browser

      import WiFiAware
      import Network
      
      // Listener (Publisher) Device: Construct a NetworkListener
      let listener = try NetworkListener(for:
              .wifiAware(.connecting(to: .fileService, from: .matching(deviceFilter))),
          using: .parameters {
              TLS()
          })
          .onStateUpdate { listener, state in
              // Process state update
          }
      
      // Browser (Subscriber) Device: Construct a NetworkBrowser
      let browser = NetworkBrowser(for:
              .wifiAware(.connecting(to: .matching(deviceFilter), from: .fileService))
          )
          .onStateUpdate { browser, state in
              // Process state update
          }
    • 17:44 - Establish a connection

      // Listener (Publisher) Device: Start NetworkListener
      try await listener.run { connection in  // Radio resources in use
          // Closure executes for each incoming connection
          connection.onStateUpdate { connection, state in
              // Process state update
          }
      }
      
      // Browser (Subscriber) Device: Start NetworkBrowser
      let endpoint = try await browser.run { waEndpoints in // Radio resources in use
              // Review endpoints, decide whether to return or skip
              if let endpoint = self.endpoint(in: waEndpoints) { return .finish(endpoint) }
              else { return .continue }
          }
      // Create the connection
      let connection = NetworkConnection(to: endpoint, using: .parameters {
              TLS()
          })
          .onStateUpdate { connection, state in
              // Process state update
          }
    • 21:11 - Tune performance

      // Listener (Publisher) Device
      // Configure .realtime + .interactiveVideo on NetworkListener
      let listener = try NetworkListener(for:
              .wifiAware(.connecting(to: .fileService, from: .matching(deviceFilter))),
          using: .parameters {
              TLS()
          }
          .wifiAware { $0.performanceMode = .realtime }
          .serviceClass(.interactiveVideo))
      
      // Browser (Subscriber) Device
      // Configure .realtime + .interactiveVideo on NetworkConnection
      let connection = NetworkConnection(to: endpoint, using: .parameters {
              TLS()
          }
          .wifiAware { $0.performanceMode = .realtime }
          .serviceClass(.interactiveVideo))
      
      // Listener (Publisher) Device & Browser (Subscriber) Device
      // Read performance report
      let performanceReport = try await connection.currentPath?.wifiAware?.performance
    • 0:00 - Introducción
    • Aprende a usar Wi-Fi Aware en iOS y iPadOS para crear conexiones de red punto a punto con baja latencia y alto rendimiento.

    • 1:01 - Descripción general
    • Wi-Fi Aware es un estándar que permite la comunicación directa entre dispositivos sin necesidad de enrutadores o servidores centrales. Funciona junto con conexiones Wi-Fi regulares, lo que permite que los dispositivos se descubran y se conecten de forma segura y dinámica para experiencias efímeras locales como el intercambio de archivos, la transmisión multimedia, el control de accesorios y la pantalla compartida. Wi-Fi Aware es multiplataforma e interoperable, con conexiones totalmente autenticadas y encriptadas. Las apps pueden definir servicios, especificar roles como editores o suscriptores (o ambos) y sincronizar dispositivos para lograr reconexiones rápidas y sin inconvenientes siempre que estén cerca.

    • 7:46 - Emparejar
    • Los dispositivos se pueden enlazar mediante la estructura DeviceDiscoveryUI o la estructura AccessorySetupKit. DeviceDiscoveryUI es adecuada para el enlace de app a app y es compatible con dispositivos Apple y de terceros. AccessorySetupKit es adecuada para el enlace de app a accesorio. Una vez enlazados los dispositivos, ambas estructuras permiten que las apps accedan y administren la lista de dispositivos enlazados, recuperen sus propiedades y escuchen los cambios en el estado de emparejamiento, lo que permite que la app actualice su IU y su estado en consecuencia.

    • 15:05 - Conectar
    • Una vez enlazados, los dispositivos pueden conectarse entre sí. Un dispositivo tiene el rol de editor y el otro dispositivo tiene el rol de suscriptor. El editor filtra por dispositivos específicos y comienza a escuchar, mientras que el suscriptor filtra y comienza a navegar. Una vez que el suscriptor encuentra al editor, proporciona puntos finales a la app, que después establece conexiones. El receptor recibe y reenvía estas solicitudes de conexión, lo que permite el intercambio de datos.

    • 19:01 - Optimizar
    • Para optimizar el rendimiento de la conexión de una app, la estructura Wi-Fi Aware permite a los desarrolladores ajustar ciertos parámetros. La estructura proporciona dos modos de rendimiento principales: masivo y en tiempo real. El modo masivo es energéticamente eficiente, pero tiene mayor latencia, mientras que el modo en tiempo real ofrece menor latencia, pero consume más energía. Los desarrolladores también pueden configurar la clase de servicio de tráfico para priorizar la transmisión de paquetes, con opciones de mejor esfuerzo, video o voz interactivos y clase de servicio en segundo plano. El marco ofrece informes de rendimiento a pedido que incluyen métricas sobre la intensidad de la señal, el rendimiento y la latencia, que los desarrolladores pueden usar para ajustar el rendimiento de su app en función de pruebas del mundo real y factores ambientales.

    • 22:26 - Lineamientos
    • Los fabricantes de hardware que desarrollan dispositivos compatibles con Wi-Fi Aware pueden consultar las pautas de diseño de accesorios de Apple en el sitio web para desarrolladores para optimizar la interoperabilidad, la seguridad y el rendimiento. La guía, junto con la documentación de la estructura y la app de muestra, proporcionan recursos esenciales para crear experiencias de usuario de alta calidad.

Developer Footer

  • Videos
  • WWDC25
  • Mejora la conectividad de los dispositivos con Wi-Fi Aware
  • 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