Ios HealthKit授权状态始终为1

Ios HealthKit授权状态始终为1,ios,objective-c,healthkit,Ios,Objective C,Healthkit,我正在我的应用程序中使用HealthKit。我正在获得用户访问HealthKit数据的权限。 授权后,如果我检查特定HealthKit对象类型的授权状态,它总是返回访问被拒绝。(1是枚举整数值) 这是我的密码 // Steps if ([self.healthStore authorizationStatusForType:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]] == HKAutho

我正在我的应用程序中使用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存储中没有请求类型的数据。如果你的 应用程序被授予共享权限,但没有读取权限,您只能看到 应用程序已写入应用商店的数据。来自其他国家的数据 消息来源仍然隐藏


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

以下内容来自,并解释了应用程序可能无法查询其是否具有读取权限的原因:

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



我看到了同样的行为。我已确认在健康应用中为我的身高应用启用了共享,但来自authorizationStatusForType:的响应仍然为HKAuthorizationStatusSharingDenied。这是我的模拟器。你试过设备吗?是的。在设备上也是一样的。正在下一次更新中查找修复程序。@iranjith4是否能够找到此问题的解决方案?。我面临着同样的问题,每次即使是许可被授予,我都会被拒绝,有什么办法可以解决吗?@PrashantTukadiya,据我所知,没有办法获得这样的地位。苹果故意否认。更多信息请访问:我看到了同样的行为。我已确认在健康应用中为我的身高应用启用了共享,但来自authorizationStatusForType:的响应仍然为HKAuthorizationStatusSharingDenied。这是我的模拟器。你试过设备吗?是的。在设备上也是一样的。正在下一次更新中查找修复程序。@iranjith4是否能够找到此问题的解决方案?。我面临着同样的问题,每次即使是许可被授予,我都会被拒绝,有什么办法可以解决吗?@PrashantTukadiya,据我所知,没有办法获得这样的地位。苹果故意否认。更多信息请访问:这绝对没有意义。谢谢你为我们翻译:)很有道理。用户的隐私比你的应用更重要;-)@cafedeichi它是明确设计的,所以你不能。@Allan所以没有办法找到用户是否授予了权限?修复了我的问题。这绝对没有意义。谢谢你为我们翻译:)很有道理。用户的隐私比你的应用更重要;-)@cafedeichi它是明确设计的,所以你不能。@Allan所以没有办法找到用户是否授予了权限?修复了我的问题。
NSArray *readTypes = @[[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed],[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning],[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount]];

[self.healthStore requestAuthorizationToShareTypes:nil
                                         readTypes:[NSSet setWithArray:readTypes] completion:nil];