繁体   English   中英

在HealthKit中请求授权:为什么结果总是成功?

[英]Requesting authorization in HealthKit: why the result is always successful?

我要求仅通过以下方式访问某些健康信息:

let healthStore = HKHealthStore()
let types: Set<HKObjectType> = [distanceWalkingRunning]

healthStore.requestAuthorization(toShare: nil, read: types) { (success, error) in
        completion(success, error)
}

然后,在首次启动该应用程序时,会向我显示标准对话框,供您选择是否要让Health来访问信息。 如果我点击“不允许”,则会显示一个警报视图,其中显示:

Health Access-您可以稍后在Health应用程序中打开健康数据类别。

他们将关闭警报和“运行状况”访问对话框,并显示应用程序的登录屏幕。 我可以看到, healthStore.requestAuthorization方法调用中提供的completion关闭healthStore.requestAuthorization都为success参数获取了true值,为error参数获取了nil

然后,我怎么知道该用户不允许访问“健康”?

success参数的文档如下:

一个布尔值,指示是否成功处理了请求。 此值不指示是否实际授予了权限。 如果在处理请求时发生false则此参数为false否则为false 否则,这是true

在初始和后续请求两者的请求被成功处理,你会得到truesuccess

您无法确定用户是否已授予对您请求的数据的读取访问权限。 同样,从文档中

为了帮助防止敏感健康信息的可能泄漏,您的应用无法确定用户是否已授予读取数据的权限。 如果未获得您的许可,则在HealthKit存储中就好像没有所请求类型的数据一样。

提出授权请求后,您只需尝试读取数据,您将得到它,或者似乎没有可用数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM