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
  • Boostez la connectivité des appareils avec Wi-Fi Aware

    Découvrez comment créer des connexions réseau peer-to-peer avec Wi-Fi Aware. Nous verrons également comment partager des vidéos en temps réel, transférer des fichiers volumineux et contrôler les accessoires avec une bande passante améliorée et une latence plus faible. Vous apprendrez également à utiliser DeviceDiscoveryUI, AccessorySetupKit et le framework Network pour intégrer Wi-Fi Aware dans votre app.

    Chapitres

    • 0:00 - Introduction
    • 1:01 - Aperçu
    • 7:46 - Associer
    • 15:05 - Connecter
    • 19:01 - Optimiser
    • 22:26 - Directives

    Ressources

    • Wi-Fi Aware
    • Accessory Design Guidelines
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC24

    • Meet AccessorySetupKit
  • Rechercher dans cette vidéo…
    • 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 - Introduction
    • Découvrez comment utiliser la fonction Wi-Fi Aware sur iOS et iPadOS pour créer des connexions réseau peer-to-peer à latence faible et débit élevé.

    • 1:01 - Aperçu
    • Wi-Fi Aware est une norme qui permet une communication directe entre appareils sans avoir besoin de routeurs ou de serveurs centraux. Elle fonctionne parallèlement aux connexions Wi-Fi classiques. Grâce à cette technologie, les appareils peuvent se repérer et établir des connexions sécurisées et flexibles pour des usages temporaires, comme le transfert de fichiers, le streaming multimédia, la gestion d’accessoires ou le partage d’écran. Wi-Fi Aware fonctionne sur différentes plateformes et assure une compatibilité totale tout en garantissant des connexions sécurisées avec authentification et chiffrement. Les apps peuvent créer leurs propres services et attribuer des rôles d’éditeur ou d’abonné (ou les deux), ce qui permet aux appareils de se reconnecter automatiquement et instantanément dès qu’ils sont à portée de l’un de l’autre.

    • 7:46 - Associer
    • Les appareils peuvent être jumelés à l’aide du framework DeviceDiscoveryUI ou AccessorySetupKit. DeviceDiscoveryUI est conçu pour le jumelage entre apps. Il prend aussi en charge les appareils Apple et ceux d’autres fabricants. AccessorySetupKit est spécialement conçu pour connecter des apps avec des accessoires. Une fois les appareils jumelés, les deux frameworks permettent aux apps d’accéder à la liste des appareils jumelés, de gérer cette liste, de récupérer leurs propriétés et de détecter les changements d’état du jumelage, ce qui permet à l’app d’adapter son interface et son fonctionnement en temps réel.

    • 15:05 - Connecter
    • Une fois jumelés, les appareils peuvent se connecter les uns aux autres. Un appareil joue le rôle d’éditeur, tandis que l’autre joue le rôle d’abonné. L’éditeur filtre les appareils spécifiques et commence l’écoute, tandis que l’abonné filtre et commence la navigation. Lorsque l’abonné a trouvé l’éditeur, il fournit des points de terminaison à l’app, qui établit ensuite les connexions. L’écouteur reçoit et transmet ces demandes de connexion, ce qui permet l’échange de données.

    • 19:01 - Optimiser
    • Pour optimiser les performances de connexion d’une app, le framework Wi-Fi Aware permet aux développeurs d’ajuster certains paramètres. Le framework propose deux modes de performance principaux : bulk et real-time. Le mode bulk est économe en énergie, mais présente une latence plus élevée, tandis que le mode real-time offre une latence plus faible, mais consomme plus d’énergie. Les développeurs peuvent également configurer différents niveaux de priorité pour la transmission des données, avec des options pour le meilleur effort, la vidéo interactive ou la voix et la classe de service en arrière-plan. Le framework fournit des rapports de performances à la demande qui incluent des statistiques sur la puissance du signal, le débit et la latence. Les développeurs peuvent s’en servir pour optimiser les performances de leur app en fonction de tests réels et de facteurs environnementaux.

    • 22:26 - Directives
    • Les fabricants de matériel qui développent des appareils Wi-Fi Aware peuvent consulter les directives de conception des accessoires Apple sur le site web des développeurs pour obtenir des informations sur l’interopérabilité, la sécurité et l’optimisation des performances. Ce guide, ainsi que la documentation sur le framework et l’exemple d’app, fournissent des ressources essentielles pour créer des expériences utilisateur de haute qualité.

Developer Footer

  • Vidéos
  • WWDC25
  • Boostez la connectivité des appareils avec 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