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
  • Terminez les tâches d’arrière-plan

    Découvrez les avancées en matière d'exécution en arrière-plan et comprenez comment le système planifie l'exécution. Nous verrons comment tirer le meilleur parti de l'exécution en arrière-plan pour permettre à votre app de fournir des fonctionnalités en arrière-plan, tout en garantissant une excellente expérience de premier plan. Nous verrons également comment les API fournissent un environnement d'exécution en arrière-plan pour votre app, et comment chaque API est adaptée à différents cas d'utilisation — y compris les nouvelles API d'iOS et d'iPadOS 26 qui permettent à votre app de terminer certaines tâches lors de sa transition du premier plan vers l'arrière-plan.

    Chapitres

    • 0:00 - Bienvenue
    • 1:22 - Introduction
    • 2:09 - Comportements et contraintes
    • 7:29 - API de tâches d’arrière-plan
    • 11:23 - Tâches de traitement continu

    Ressources

    • Uploading asset resources in the background
    • Performing long-running tasks on iOS and iPadOS
    • Background Tasks
      • Vidéo HD
      • Vidéo SD
  • Rechercher dans cette vidéo…
    • 8:27 - Register an app refresh task

      import BackgroundTasks
      import SwiftUI
      
      @main
      struct ColorFeed: App {
          var body: some Scene {
              WindowGroup {
                  // ...
              }
              .backgroundTask(.appRefresh("com.colorfeed.wwdc25.appRefresh")) {
                  await self.handleAppRefreshTask()
              }
          }
      }
    • 9:45 - Register a processing task

      import BackgroundTasks
      import UIKit
      
      class AppDelegate: UIResponder, UIApplicationDelegate {
          func application(
              _ application: UIApplication,
              didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
          ) -> Bool {
              BGTaskScheduler.shared.register(
                  forTaskWithIdentifier: "com.example.apple-samplecode.ColorFeed.db_cleaning",
                  using: nil
              ) { task in
                  self.handleAppRefresh(task: task as! BGProcessingTask)
              }
          }
      
          func submitProcessingTaskRequest() {
              let request = BGProcessingTaskRequest(
                  identifier: "com.example.apple-samplecode.ColorFeed.db_cleaning"
              )
              request.requiresNetworkConnectivity = true
              request.requiresExternalPower = true
      
              BGTaskScheduler.shared.submit(request)! 
          }
      }
    • 10:51 - Begin and end background task

      import UIKit
      
      @main
      class AppDelegate: UIResponder, UIApplicationDelegate {
          var backgroundTaskID: UIBackgroundTaskIdentifier = .invalid
         
          func saveState() { /*  ... */ }
      
          func handlePersistence() {
              let app = UIApplication.shared
              guard backgroundTaskID != .invalid else { return }
              backgroundTaskID = app.beginBackgroundTask(withName: "Finish Export") {
                  app.endBackgroundTask(self.backgroundTaskID)
                  self.backgroundTaskID = .invalid
              }
      
              self.saveState()
      
              app.endBackgroundTask(backgroundTaskID)
              backgroundTaskID = .invalid
          }
      }
    • 14:00 - Continued processing task registration

      import BackgroundTasks
      
      func handleDialogConfirmation() {
          BGTaskScheduler.shared.register("com.colorfeed.wwdc25.userTask") { task in
              let task = task as! BGContinuedProcessingTask
                                                                            
              var shouldContinue = true
              task.expirationHandler = {
                  shouldContinue = false
              }
      
              task.progress.totalUnitCount = 100
              task.progress.completedUnitCount = 0
      
              while shouldContinue {
                  // Do some work
                  task.progress.completedUnitCount += 1
              }
      
              task.setTaskCompleted(success: true)
          }
      }
    • 15:47 - Continued processing task submission

      import BackgroundTasks
      
      func submitContinuedProcessingTaskRequest() {
          let request = BGContinuedProcessingTaskRequest(
              identifier: "com.colorfeed.wwdc25.userTask",
              title: "A succinct title",
              subtitle: "A useful and informative subtitle"
          )
      
          request.strategy = .fail
      
          BGTaskScheduler.shared.submit(request)!
      }
    • 0:00 - Bienvenue
    • Découvrez comment les apps peuvent utiliser l’environnement d’exécution en arrière-plan pour effectuer des tâches telles que la prélecture et la synchronisation dans votre app.

    • 1:22 - Introduction
    • Les apps se chargent en mémoire, passent au premier plan et sont au centre de l’attention. Lorsqu’un utilisateur quitte une app, celle-ci passe en arrière-plan et le système l’interrompt pour économiser la batterie et les ressources. L’application peut demander un bref délai pour terminer les tâches. Au retour, elle revient au premier plan.

    • 2:09 - Comportements et contraintes
    • Dans iOS et iPadOS, l’exécution en arrière-plan est étroitement gérée afin de prioriser l’autonomie de la batterie et d’optimiser les performances. L’exécution en arrière-plan est opportuniste et discrétionnaire, l’énergie étant la contrainte la plus fondamentale. Vous devez concevoir les tâches d’arrière-plan de votre app pour qu’elles soient efficaces, légères et ciblées. Le système regroupe les tâches et peut limiter, suspendre ou arrêter les processus qui consomment trop de ressources. Veillez à ce que le travail en arrière-plan reste minimal, reportez les tâches non essentielles jusqu’au chargement et assurez-vous que les tâches sont atomiques et résilientes. Les apps doivent être courtoises et respecter les préférences des utilisateurs et les conditions du système. Le système offre de la transparence aux utilisateurs, ce qui leur permet d’influer sur les décisions de planification. Le succès des charges de travail en arrière-plan dépend de leur adaptabilité et de leur alignement avec les priorités du système.

    • 7:29 - API de tâches d’arrière-plan
    • iOS et iPadOS proposent différentes API pour la conception des tâches exécutées en arrière-plan. Le système optimise ces tâches en fonction des modèles d’utilisation des apps et des contraintes de l’appareil. 'BGAppRefreshTask' permet aux applications de récupérer silencieusement du contenu avant utilisation. Les applications fréquemment utilisées reçoivent une planification plus fréquente. Les notifications push en arrière-plan réveillent l’application pour récupérer le nouveau contenu lorsque le serveur envoie une notification, mais elles sont considérées comme discrétionnaires et peu prioritaires afin de minimiser la surcharge. 'BGProcessingTask' permet aux applications d’effectuer des tâches plus complexes, comme l’exécution de modèles ML ou la maintenance de bases de données. Cette tâche doit être enregistrée au lancement. Vous pouvez la configurer pour qu’elle ne s’exécute que lorsque l’appareil est sur un chargeur et connecté à un réseau. Les API beginBackgroundTask et endBackgroundTask donnent aux apps plus de temps pour effectuer des tâches cruciales, telles que l’enregistrement de l’état ou la fermeture de connexions, lors du passage en arrière-plan.

    • 11:23 - Tâches de traitement continu
    • Dans iPadOS et iOS 26, une nouvelle API BGContinuedProcessingTask permet aux apps d’effectuer des tâches commencées par un utilisateur au premier plan même après avoir été placées en arrière-plan. Cette fonctionnalité améliore l’expérience en permettant à l’app d’effectuer des tâches complexes sans avoir besoin de l’ouvrir. Par exemple, l’app Journal utilise cette API pour exporter des fichiers en arrière-plan. Un utilisateur lance l’exportation en appuyant sur un bouton, et l’app fournit ensuite des mises à jour de progression via l’interface utilisateur du système. L’utilisateur peut suivre la progression et annuler la tâche à tout moment, en gardant un contrôle total. Ces tâches doivent toujours commencer par une action explicite, telle qu’une pression sur un bouton ou un geste. Elles représentent des objectifs clairs et immédiats, comme exporter des fichiers, publier du contenu sur les réseaux sociaux ou effectuer des mises à jour sur des accessoires connectés. Le système s’attend à ce que ces tâches fassent des progrès mesurables. Vous devez enregistrer un gestionnaire de lancement pour gérer le suivi de l’état et de la progression. Fournissez des mises à jour opportunes sur la progression de la charge de travail à l’aide du protocole de suivi de la progression. Si la progression de la tâche est plus lente que prévu, le système invite l’utilisateur à décider de continuer ou non. Une fois la tâche terminée, vous devez informer le système à l’aide de la méthode 'setTaskCompleted'. En outre, l’app doit gérer les interruptions potentielles de manière élégante en fournissant un gestionnaire d’expiration. L’API prend également en charge l’accès au GPU en arrière-plan sur les appareils pris en charge, ce qui vous permet de créer des expériences d’arrière-plan plus puissantes et plus efficaces. Cependant, n’oubliez pas qu’iOS donne la priorité à l’expérience au premier plan et que les tâches d’arrière-plan peuvent recevoir une qualité de service inférieure. Néanmoins, le système augmente intelligemment la priorité des tâches lorsque l’application revient au premier plan.

Developer Footer

  • Vidéos
  • WWDC25
  • Terminez les tâches d’arrière-plan
  • 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