所以我有一个watchOS
应用程序,用户可以跟踪他们的户外活动,其中包括心率。所有这些都运行良好,但在支持方面,我们有时会收到用户抱怨该应用程序没有跟踪他们的心率。在几乎所有的情况下,缺少heartrate的READ权限是问题所在。现在,我想在应用程序中添加一个小提示,即此权限丢失,以便用户知道并希望能够自行解决问题。现在唯一的问题。。怎么做?
我尝试了以下方法:
let healthStore = HKHealthStore()
let heartRateType = HKObjectType.quantityType(forIdentifier: .heartRate)!
let authStatus = healthStore.authorizationStatus(for: heartRateType)
// authStatus will be .sharingAuthorized even WITHOUT read permissions and only write permissions given
但这只给了我SHARE权限状态。我想要读取权限状态。因此,当在设置中允许写入心率但拒绝阅读时,此authStatus
仍然是授权的。
另外,只是尝试启动我的HKAnchoredObjectQuery
不会在结果处理程序中给予我一个error
。它将被调用一次(就像我已经给予了许可一样),但只使用空样本。但我会预料到一个错误,说我没有权限?但事实并非如此。
所以我最后一个问题:是否有方法可以使用HealthKit
判断我是否具有watchOS
上heartrate的READ权限?
2条答案
按热度按时间sbdsn5lh1#
检查https://developer.apple.com/documentation/healthkit/authorizing_access_to_health_data
为了帮助保护用户的隐私,您的应用不知道用户是否授予或拒绝了从HealthKit读取数据的权限。如果用户拒绝权限,则尝试从HealthKit查询数据时,将仅返回您的应用已成功保存到HealthKit商店的样本。
5kgi1eie2#
所有使用Healthkit的应用程序,如Nike和其他应用程序,只需检查Healthkit的写入权限,但所有类型都需要权限。我同意上一篇文章关于它的观点。在我的经验中,大多数用户只是给予所有权限或不给予任何权限。这可能是您检查权限的唯一方法,或者您可以向Apple提交请求。然而,他们可能会让它保持原样。