如何让 Apple Watch 进入防水模式?

Posted

技术标签:

【中文标题】如何让 Apple Watch 进入防水模式?【英文标题】:How to put Apple Watch into waterproof mode? 【发布时间】:2017-02-02 17:50:04 【问题描述】:

我已经安排好了游泳训练。

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 会自动使用 Water Lock 锁定屏幕,以避免意外点击。完成后,转动 Digital Crown 表冠以解锁屏幕并清除 Apple Watch 上的水。您会听到声音,并且可能会感觉到手腕上有水。

此功能似乎不适用于我的应用程序。

我只有一个系列 0 可以测试,所以我无法确认我的代码在防水锁方面发生了什么。

我是否遗漏了一些东西来让锻炼迫使手表进入防水模式?

【问题讨论】:

“防水模式”是什么意思?您是否正在考虑一些特定的功能?否则 Apple 的技术说明“关于 Apple Watch 防水性”:support.apple.com/en-ca/HT205000 感谢您提供该链接。我正在尝试使“自动”功能正常工作:“当您开始游泳锻炼时,Apple Watch 会自动使用 Water Lock 锁定屏幕以避免意外点击。完成后,转动 Digital Crown 以解锁屏幕并清除 Apple Watch 上的水。您会听到声音,并且可能会感觉到手腕上有水。” 显然水锁没有用我的代码激活。 【参考方案1】:

自 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()

【讨论】:

【参考方案2】:

目前没有“防水模式”。我的客户认为有。

原生 Apple 锻炼应用程序有一个按钮,用于锁定手表并忽略交互,直到旋转数字表冠。这目前无法在第三方应用中重现。

我找到的解决方案是禁用手表应用程序上的所有按钮。这样,在水中时按钮就不会被意外敲击。用户必须强制触摸手表才能重新启用按钮。

【讨论】:

以上是关于如何让 Apple Watch 进入防水模式?的主要内容,如果未能解决你的问题,请参考以下文章

Apple Watch 让应用程序保持活跃几秒钟

当 Apple Watch 处于后台状态或睡眠模式时,我们如何从 iphone 向 Apple Watch 发送消息?

如何使用/获取 Apple Watch 全屏模式

如何在离线模式下从 Apple Watch 导入使用 HealthKit 的步骤?

如何在离线模式下从 Apple Watch 导入使用 HealthKit 的步骤?

如何在 Apple Watch 上禁用“转入睡眠”?