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
  • Terminar tareas en segundo plano

    Descubre los avances de la ejecución en segundo plano y comprende cómo el sistema programa el tiempo de ejecución. Analizaremos cómo aprovechar al máximo el tiempo de ejecución en segundo plano para permitir que la app ofrezca funcionalidades en segundo plano y, al mismo tiempo, mantenga una excelente experiencia en primer plano. También abarcaremos cómo las API proporcionan tiempo de ejecución en segundo plano para tu app y cómo se adapta cada API a diferentes casos de uso, incluidas las nuevas API en iOS y iPadOS 26 (que permiten que la app termine las tareas a medida que la app pasa del primer plano al segundo plano).

    Capítulos

    • 0:00 - Te damos la bienvenida
    • 1:22 - Introducción
    • 2:09 - Comportamientos y restricciones
    • 7:29 - API de tareas en segundo plano
    • 11:23 - Tareas de procesamiento continuo

    Recursos

    • Uploading asset resources in the background
    • Performing long-running tasks on iOS and iPadOS
    • Background Tasks
      • Video HD
      • Video SD
  • Buscar este video…
    • 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 - Te damos la bienvenida
    • Descubre cómo las apps pueden usar el tiempo de ejecución en segundo plano para realizar tareas, como la precarga y la sincronización en tu app.

    • 1:22 - Introducción
    • Las apps se cargan en la memoria, pasan a primer plano y son el foco principal. Cuando alguien abandona una app, esta pasa a segundo plano y el sistema la suspende para ahorrar batería y recursos. La app puede solicitar un tiempo breve para finalizar las tareas. Al regresar, vuelve al primer plano.

    • 2:09 - Comportamientos y restricciones
    • En iOS y iPadOS, el tiempo de ejecución en segundo plano está estrictamente administrado para priorizar la duración de la batería y optimizar el rendimiento. La ejecución en segundo plano es puntual y selectiva, siendo la energía la restricción fundamental. Debes diseñar las tareas en segundo plano de tu app para que sean eficientes, ligeras y tengan un propósito definido. El sistema fusiona el trabajo y puede limitar, suspender o finalizar procesos que consuman demasiados recursos. Mantén el trabajo en segundo plano al mínimo, aplaza las tareas no esenciales hasta la carga, y asegúrate de que las tareas sean de naturaleza atómica y flexible. Las apps deben ser corteses, respetando las preferencias de las personas y las condiciones del sistema. El sistema proporciona transparencia a las personas, permitiéndoles influir en las decisiones de programación. El éxito de las cargas de trabajo en segundo plano depende de su capacidad de adaptación y alineación con las prioridades del sistema.

    • 7:29 - API de tareas en segundo plano
    • iOS y iPadOS ofrecen varias API para diseñar tareas que se ejecutan en segundo plano. El sistema optimiza estas tareas según los patrones de uso de la app y las limitaciones del dispositivo. BGAppRefreshTask permite que las apps recuperen contenido de forma silenciosa antes de su uso, programando con mayor frecuencia las apps más usadas. Las notificaciones push en segundo plano activan la app para recuperar contenido nuevo cuando el servidor envía una notificación, pero se consideran discrecionales y de baja prioridad para minimizar la sobrecarga. BGProcessingTask permite que las apps realicen trabajos más complejos, como ejecutar modelos ML o mantenimiento de bases de datos. Esta tarea debe registrarse durante el inicio y puede configurarse para que se ejecute solo cuando el dispositivo esté cargándose y conectado a una red. Las API beginBackgroundTask y endBackgroundTask brindan a las apps tiempo adicional para completar trabajos cruciales, como guardar el estado o cerrar conexiones, cuando pasan al segundo plano.

    • 11:23 - Tareas de procesamiento continuo
    • En iPadOS y iOS 26, hay una nueva API BGContinuedProcessingTask, que permite que las apps completen tareas iniciadas por alguien en primer plano incluso después de haber estado en segundo plano. Esta funcionalidad mejora la experiencia permitiendo que la app complete tareas complejas sin necesidad de estar abierta. Por ejemplo, la app Journal usa esta API para exportar archivos en segundo plano. Alguien inicia la exportación con solo tocar un botón y luego la app proporciona actualizaciones de progreso a través de la IU del sistema. La persona puede monitorear el progreso y cancelar la tarea en cualquier momento, manteniendo el control total. Estas tareas siempre deben comenzar con una acción explícita, como tocar un botón o realizar un gesto. Representan objetivos claros e inmediatos, como exportar archivos, publicar contenido en redes sociales o completar actualizaciones en accesorios conectados. El sistema espera que estas tareas realicen progresos medibles. Debes registrar un controlador de lanzamiento para administrar los informes de estado y progreso. Proporcionar actualizaciones oportunas sobre la progresión de la carga de trabajo usando el protocolo de informes de progreso. Si el progreso de la tarea es más lento de lo esperado, el sistema le pide a la persona que decida si desea continuar. Cuando se complete la tarea, deberás informárselo al sistema mediante el método setTaskCompleted. Además, la app debe administrar posibles interrupciones de manera fluida proporcionando un controlador de vencimiento. La API también admite el acceso a la GPU en segundo plano en dispositivos compatibles, lo que te permite crear experiencias en segundo plano más poderosas y eficientes. Sin embargo, recuerda que iOS prioriza la experiencia en primer plano, por lo que las tareas en segundo plano pueden recibir una menor calidad de servicio. Sin embargo, el sistema aumenta de forma inteligente la prioridad de la tarea cuando la app regresa al primer plano.

Developer Footer

  • Videos
  • WWDC25
  • Terminar tareas en segundo plano
  • 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