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
  • Acompanhe exercícios com o HealthKit no iOS e iPadOS

    Conheça as melhores práticas para criar uma ótima experiência de exercício no iOS. Revise o ciclo de vida de uma sessão de exercício, explore as diferenças entre os treinos no Apple Watch e no iPhone e saiba como usar as Atividades ao Vivo e a Siri para melhorar a experiência do seu app na Tela Bloqueada.

    Capítulos

    • 0:00 - Introdução
    • 0:56 - Realizar uma sessão de exercício
    • 2:50 - Obter as métricas da sessão
    • 8:35 - Recuperar após um falha
    • 9:34 - Melhores práticas

    Recursos

    • Handling Workout Requests with SiriKit
    • Running workout sessions
    • Building a workout app for iPhone and iPad
    • Building a multidevice workout app
    • HKWorkoutSession
      • Vídeo HD
      • Vídeo SD

    Vídeos relacionados

    WWDC25

    • Conheça a API Medications do HealthKit

    WWDC24

    • Bring your app’s core features to users with App Intents

    WWDC23

    • Build a multi-device workout app
    • Meet ActivityKit
  • Buscar neste vídeo...
    • 1:30 - Set up workout session

      // Set up workout session
      
      // Create workout configuration
      let configuration = HKWorkoutConfiguration()
      configuration.activityType = .running
      configuration.locationType = .outdoor
      
      // Create workout session
      let session = try HKWorkoutSession(healthStore: healthStore, configuration: configuration)
      session.delegate = self
      
      // Get associated workout builder and add data source
      let builder = session.associatedWorkoutBuilder()
      builder.delegate = self
      builder.dataSource = HKLiveWorkoutDataSource(healthStore: healthStore,
                                                   workoutConfiguration: configuration)
    • 1:54 - Starting the session

      // Prepare and start session
      
      session.prepare()
      
      // Start and display count down
      
      // Start session and builder collection once count down finishes
      session.startActivity(with: startDate)
      try await builder.beginCollection(at: startDate)
    • 2:14 - Handling Metrics

      // Handling collected metrics
      
      func workoutBuilder(_ workoutBuilder: HKLiveWorkoutBuilder, 
                          didCollectDataOf collectedTypes: Set<HKSampleType>) {
          for type in collectedTypes {
              guard let quantityType = type as? HKQuantityType else { return }
      
              let statistics = workoutBuilder.statistics(for: quantityType)
      
              // Update the published values
              updateForStatistics(statistics)
          }
      }
    • 2:28 - Ending workout

      // Stopping the workout session
      
      session.stopActivity(with: .now)
      
      // Session transitions to stopped then call end
      func workoutSession(_ workoutSession: HKWorkoutSession,
                          didChangeTo toState: HKWorkoutSessionState,
                          from fromState: HKWorkoutSessionState,
                          date: Date) {
          guard change.newState == .stopped, let builder else { return }
           
          try await builder.endCollection(at: change.date)
          let finishedWorkout = try await builder.finishWorkout()
          session.end()
      }
    • 7:17 - Set up Siri Intent

      // Create an INExtension within your main app
      
      // Define an intent handler
      public class IntentHandler: INExtension {
      
      }
      
      // Define the intents to support
      extension IntentHandler: INStartWorkoutIntentHandling
      
      extension IntentHandler: INPauseWorkoutIntentHandling
      
      extension IntentHandler: INResumeWorkoutIntentHandling
      
      extension IntentHandler: INEndWorkoutIntentHandling
    • 7:32 - Handle the Siri intent

      // Handle the intent
      
      public func handle(intent: INStartWorkoutIntent) async -> INStartWorkoutIntentResponse {
          let state = await WorkoutManager.shared.state
              
          switch state {
          case .running, .paused, .prepared, .stopped:
              return INStartWorkoutIntentResponse(code: .failureOngoingWorkout, 
                                                  userActivity: nil)
          default:
              break;
          }
          Task {
              await MainActor.run {
                  // Handle the intents activity type and location
                  WorkoutManager.shared.setWorkoutConfiguration(activityType: .running,   
                                                                location: .outdoor)
              }
          }
          return INStartWorkoutIntentResponse(code: .success, userActivity: nil)
       }
    • 7:52 - App Delegate

      // Implement an app delegate
      
      // Create app delegate
      class WorkoutsOniOSSampleAppDelegate: NSObject, UIApplicationDelegate {
          let handler = IntentHandler()
      
          func application(_ application: UIApplication, handlerFor intent: INIntent) -> Any? {
              return handler
          }
      }
      
      // Add app delegate to app
      struct WorkoutsOniOSSampleApp: App {
          @UIApplicationDelegateAdaptor(WorkoutsOniOSSampleAppDelegate.self) var appDelegate
      
      }
    • 9:09 - Set up crash recovery

      // App Delegate
      
      func application(_ application: UIApplication,
                       configurationForConnecting connectingSceneSession: UISceneSession,
                       options: UIScene.ConnectionOptions) -> UISceneConfiguration {
          if options.shouldHandleActiveWorkoutRecovery {
              let store = HKHealthStore()
              store.recoverActiveWorkoutSession(completion: { (workoutSession, error) in
                  // Handle error
                  Task {
                      await WorkoutManager.shared.recoverWorkout(recoveredSession: workoutSession)
                  }
              })
          }
          let configuration = UISceneConfiguration(name: "Default Configuration", 
                                                   sessionRole: connectingSceneSession.role)
          configuration.delegateClass = WorkoutsOniOSSampleAppSceneDelegate.self
          return configuration
      }
    • 9:25 - Recover the workout session

      // Recover the workout for the session
      
      
      func recoverWorkout(recoveredSession: HKWorkoutSession) {
          session = recoveredSession
          builder = recoveredSession.associatedWorkoutBuilder()
          session?.delegate = self
          builder?.delegate = self
          workoutConfiguration = recoveredSession.workoutConfiguration
      
          let dataSource = HKLiveWorkoutDataSource(healthStore: healthStore,                                                                  
                                                   workoutConfiguration: workoutConfiguration)
          builder?.dataSource = dataSource
      }
    • 0:00 - Introdução
    • O framework HealthKit permite que apps de saúde e boa forma acessem um banco de dados criptografado centralizado com dados de saúde do usuário. Com as APIs da plataforma, você pode criar apps de exercícios para iPhone e iPad que as pessoas podem usar para acompanhar treinos, acessar métricas de saúde e receber informações sobre recuperação. Aprenda o básico sobre sessões de exercícios, como acessar métricas durante os treinos, como lidar com falhas e como fornecer dicas e práticas recomendadas.

    • 0:56 - Realizar uma sessão de exercício
    • O mesmo código pode ser usado no iPhone, no iPad e no Apple Watch com pequenos ajustes. Para monitorar qualquer atividade, crie uma configuração de treino, defina o tipo e inicie uma sessão. O criador de exercícios coleta métricas de saúde durante o treino.

    • 2:50 - Obter as métricas da sessão
    • Ao executar um treino no Apple Watch, os sensores integrados do dispositivo proporcionam uma experiência perfeita. Por outro lado, a coleta de dados de frequência cardíaca no iPhone ou iPad requer o emparelhamento com um sensor de frequência cardíaca externo, pois esses aparelhos não têm um. O iPhone e o iPad podem coletar várias métricas de treino, mas o sistema pode gerar amostras diferentes daquelas especificamente solicitadas por um app. Você pode modificar os tipos padrão de dados coletados durante um treino. Depois que alguém salva um treino, você pode acessar e exibir estatísticas resumidas ou métricas em gráficos ao longo do tempo. Os treinos do iPhone podem ter dados mais refinados disponíveis para determinadas métricas, semelhante ao histórico de exercícios do Apple Watch. O iPhone normalmente é bloqueado durante os treinos. Por motivos de privacidade, os dados de saúde geralmente não ficam acessíveis enquanto o dispositivo está bloqueado. No entanto, o sistema pode solicitar que alguém permita o acesso aos dados do treino a apps mesmo quando bloqueados. Você pode então exibir atividades ao vivo na Tela Bloqueada, mostrando métricas cruciais sem que a pessoa precise desbloquear o telefone. A compatibilidade com a Siri se estende para a Tela Bloqueada, permitindo iniciar, pausar, retomar ou cancelar exercícios sem usar as mãos. Você pode integrar as intenções da Siri aos seus apps para ativar essa funcionalidade.

    • 8:35 - Recuperar após um falha
    • A recuperação de falhas no Apple Watch reinicia apps e restaura automaticamente as sessões de treinos. No iPhone e iPad, um novo delegado de cena cuida da recuperação das sessões de treino após uma falha. Você pode usar esse delegado para verificar opções de recuperação e reaver as sessões recuperadas do app Saúde.

    • 9:34 - Melhores práticas
    • Para monitorar a eficiência dos treinos com o HealthKit, espelhe os exercícios iniciados no app Apple Watch para iPhone, solicite autorização apenas para os dados necessários e use a API do criador de exercícios. Com essas recomendações, você garante atualizações precisas dos círculos de Atividade e aprimora a experiência do usuário. Também faça upgrade para as novas APIs, baixe o app de demonstração e adicione suporte a exercícios para iPhone e iPad para expandir seu alcance de mercado.

Developer Footer

  • Vídeos
  • WWDC25
  • Acompanhe exercícios com o HealthKit no iOS e iPadOS
  • 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