我有一个游泳训练设置。
let configuration = HKWorkoutConfiguration()
configuration.activityType = .swimming
configuration.locationType = .outdoor
do {
workoutSession = try HKWorkoutSession(configuration: configuration)
workoutSession!.delegate = self
healthStore.start(workoutSession!)
} catch let error as NSError {
// Perform proper error handling here...
fatalError("*** Unable to create the workout session: \(error.localizedDescription) ***")
}
但我的客户说,除非他手动制作,否则手表不会进入防水模式。
对于上下文,“防水锁定”是Watch Series 2在开始游泳训练时应该进入的模式。来自an Apple Support article:
当您开始游泳训练时,Apple Watch会自动锁定屏幕并使用水锁以避免意外敲击。完成后,转动数字表冠解锁屏幕并清除Apple Watch中的水。你听到声音,手腕上可能会有水。
此功能似乎不适用于我的应用。
我只有一个0系列要测试,所以我无法确认我的代码在防水锁方面发生了什么。
我是否遗漏了一些东西让锻炼使手表进入防水模式?
答案 0 :(得分:1)
目前没有"防水模式"。我的客户的印象是有。
本机Apple Exercise应用程序有一个按钮,用于锁定手表并忽略交互,直到数字表冠旋转。目前,这在第三方应用中无法重现。
我找到的解决方案是禁用手表应用程序上的所有按钮。这样,按钮在水中时不会被意外敲击。用户必须强制触摸手表以重新启用按钮。
答案 1 :(得分:0)
从watchOS 4开始可用: https://developer.apple.com/documentation/watchkit/wkextension/2868458-enablewaterlock
// Only an application which is in an active workout or location session and is foreground is allowed to enable water lock
@available(watchOS 4.0, *)
open func enableWaterLock()
开始游泳/水上运动时致电WKExtension.shared().enableWaterLock()
。