HealthKit requestAuthorization 返回代码 100:“授权会话超时”

Posted

技术标签:

【中文标题】HealthKit requestAuthorization 返回代码 100:“授权会话超时”【英文标题】:HealthKit requestAuthorization returns code 100: "Authorization session timed out" 【发布时间】:2018-12-29 18:48:44 【问题描述】:

我的所有 HealthKit 授权请求都因此错误而超时。我的代码没有任何变化,但我最近将 Xcode 切换到了一个新的 Apple ID 帐户。

我设置了一个开发团队,配置了一个配置文件,并且 HealthKit 功能和权利工作正常。我的应用程序构建并运行良好,但每当我拨打requestAuthorization 时,我都会无缘无故地超时。错误中没有其他信息,并且所有内容似乎都已正确配置,因此我对可能导致此问题的原因一无所知。

我试过模拟器和设备都有同样的问题。 HealthKit 身份验证的对话框永远不会出现。事后我可以进入健康应用程序并打开必要的数据共享,但这不是一个可接受的解决方法。

什么会导致 healthKitStore requestAuthorization 超时错误? 我 99% 确定这是一个配置问题,但是经过多次处理,并重新创建了大量证书、配置文件等,我不知道问题可能是什么。我应该在哪里寻找配置问题?这方面的文档基本上为零,我在 Google 上只找到了 2 个与此相关的结果,没有解决方案。

let healthKitTypesToRead = [...]
let healthKitStore:HKHealthStore = HKHealthStore()

healthKitStore.requestAuthorization(toShare: nil, read: healthKitTypesToRead)  (success, error) -> Void in
    if( completion != nil ) 
        completion(success, error as? NSError)
    

【问题讨论】:

你在主线程中运行 requestAuthorization 吗? 【参考方案1】:

这是由于在后台线程中运行授权请求所致。在主线程上执行此操作解决了问题。

【讨论】:

以上是关于HealthKit requestAuthorization 返回代码 100:“授权会话超时”的主要内容,如果未能解决你的问题,请参考以下文章

HealthKit、核心数据和 CloudKit

Meteor 中的 Healthkit 插件

Meteor 中的 Healthkit 插件

HealthKit - 显示睡眠

HealthKit - 显示睡眠

从 HealthKit 存储数据