WatchOS 检测用户是否摘下手表/锁定屏幕

问题描述 投票:0回答:2

我正在设计一个 Watch 应用程序,它使用 PIN 码来创建令牌会话。目标是检测手表何时被锁定/从用户手臂上取下,以便知道何时使令牌失效,并在用户想要使用该应用程序时提示再次输入 PIN 码。如果手表在拥有有效令牌时保持开启状态,则不会要求他们输入 PIN 码。 我想知道是否有一种方法可以检测用户是否锁定/摘下手表来执行此操作?任何帮助/建议都会很棒!

ios swift watchkit apple-watch
2个回答
3
投票

不幸的是,Apple 的手腕检测 API 不向公众开放,这意味着您的应用程序无法通知手表是否在手腕上。出于安全和隐私原因,这是最合理的,因为无论手表是否戴在手腕上,公共信息都可能会产生恶意应用程序。

尽管如此,根据您的应用程序的工作方式,我建议您研究跟踪手臂运动并使用该数据来锁定应用程序,因为加速度计和陀螺仪值可供使用。

我会参考以下内容 检测iPhone/Apple Watch的物理运动用于检测手部运动


0
投票

Apple 在 watchOS 9 中为我们提供了 API。 https://developer.apple.com/documentation/localauthentication/lapolicy/deviceownerauthenticationwithwristdetection

var error: NSError?
let context = LAContext()
guard #available(watchOS 9.0, *), context.canEvaluatePolicy(.deviceOwnerWithWristDetection, error: &error) else {
    // Can't evaluate the policy, either it's unsupported or a passcode isn't set.
    // See `error` for details and fall back to legacy authentication.
}


do {
    try await context.evaluatePolicy(.deviceOwnerWithWristDetection, localizedReason: "Approve a sensitive operation")
    // The user's watch is on their wrist and they entered the correct passcode.
    
} catch {
    // Watch isn't on the wrist or the user hasn't entered the correct passcode.
    // See `error` for details and fall back to legacy authentication.
}
© www.soinside.com 2019 - 2024. All rights reserved.