如何从Apple Watch接收实时加速计数据

时间:2015-12-10 09:46:38

标签: iphone apple-watch

我想知道我是否可以创建一个苹果手表应用程序,它会将持续的实时加速度计数据发送给我的iPhone应用程序很长一段时间(例如30分钟)。我知道如何在Apple Watch应用程序处于活动状态时读取加速度数据,但如何在应用程序未处于活动状态时(在后台)读取和发送此数据?

由于

2 个答案:

答案 0 :(得分:1)

watchOS 2中,WatchConnectivity框架可用于在WatchiPhone应用之间发送数据。当您的配套iPhone应用程序处于活动状态时,您可以选择发送数据,也可以在后台发送数据。 有关watchConnectivity的更多信息,请查看此视频。 https://developer.apple.com/videos/play/wwdc2015-713/

答案 1 :(得分:0)

使用HKWorkouSession确保您的应用程序仍然在屏幕锁定或后台运行。

  

在后台运行   锻炼课程还允许您的应用继续在后台运行。后台执行授予应用程序以下功能:   该应用程序在整个锻炼过程中继续运行,即使用户降低手腕或与不同的应用程序进行交互。当用户抬起手腕时,应用程序会重新出现,让用户可以快速轻松地检查他们当前的进度和性能。   该应用程序可以在后台继续从Apple Watch的传感器访问数据,让您始终保持应用程序的最新状态。例如,正在运行的应用程序可以继续跟踪用户的心率,确保每当用户抬起手腕时显示最新的心率数据。   该应用程序可以在后台运行时使用音频或触觉反馈提醒用户。   参考:HKWorkouSession

以下来自Apple的SwingWatch演示的代码示例:

// MARK: Properties
let motionManager = MotionManager()
let healthStore = HKHealthStore()

weak var delegate: WorkoutManagerDelegate?
var session: HKWorkoutSession?

// MARK: Initialization

init() {
    motionManager.delegate = self
}

// MARK: WorkoutManager

func startWorkout() {
    // If we have already started the workout, then do nothing.
    if (session != nil) {
        return
    }

    // Configure the workout session.
    let workoutConfiguration = HKWorkoutConfiguration()
    workoutConfiguration.activityType = .tennis
    workoutConfiguration.locationType = .outdoor

    do {
        session = try HKWorkoutSession(configuration: workoutConfiguration)
    } catch {
        fatalError("Unable to create the workout session!")
    }

    // Start the workout session and device motion updates.
    healthStore.start(session!)
    motionManager.startUpdates()
}

func stopWorkout() {
    // If we have already stopped the workout, then do nothing.
    if (session == nil) {
        return
    }

    // Stop the device motion updates and workout session.
    motionManager.stopUpdates()
    healthStore.end(session!)

    // Clear the workout session.
    session = nil
}