HealthKit授权状态始终为1[英] HealthKit Authorisation Status is always 1

本文是小编为大家收集整理的关于HealthKit授权状态始终为1的处理方法,想解了HealthKit授权状态始终为1的问题怎么解决?HealthKit授权状态始终为1问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我在我的应用程序中使用 HealthKit.我从用户那里获得了访问 HealthKit 数据的许可.授权后,如果我检查特定 HealthKit 对象类型的授权状态,它总是返回访问被拒绝.(1是枚举整数值).

这是我的代码

// Steps

if ([self.healthStore authorizationStatusForType:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]] == HKAuthorizationStatusSharingAuthorized) {
    [self accessStepsFrom:fromDate to:toDate];
}

//Sleep
if ([self.healthStore authorizationStatusForType:[HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis]] == HKAuthorizationStatusSharingAuthorized) {
    [self accessSleepFrom:fromDate to:toDate];
}

//DOB
if ([self.healthStore authorizationStatusForType:[HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth]] == HKAuthorizationStatusSharingAuthorized) {
    [self accessDOB];
}

[self.healthStore authorizationStatusForType:[HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth]] 方法总是抛出 1.需要这方面的帮助吗?

推荐答案

HKObjectType 的授权状态并不反映您的应用程序是否有权读取这些样本类型.它仅表明您是否已请求授权,以及您的应用是否有权编写这些类型的示例.因此,如果您的应用请求授权读取步数样本但不写入它们,并且用户授予读取授权,则 HKQuantityTypeIdentifierStepCount 的授权状态将为 HKAuthorizationStatusSharingDenied.

以下内容来自 HealthKit 框架参考 并解释了为什么您的应用可能无法查询它是否具有读取权限:

<块引用>

为帮助防止敏感的健康信息泄露,您的应用程序无法确定用户是否已授予权限读取数据.如果您没有获得许可,它看起来就像HealthKit 存储中没有请求类型的数据.如果你的应用程序被授予共享权限但没有读取权限,您只能看到您的应用已写入商店的数据.来自其他的数据来源仍然隐藏.

本文地址:https://www.itbaoku.cn/post/924533.html