如何更新 UI 并询问 Healthkit 的权限

Posted

技术标签:

【中文标题】如何更新 UI 并询问 Healthkit 的权限【英文标题】:How to update UI and ask Permission for Healthkit 【发布时间】:2020-10-08 12:24:04 【问题描述】:

现在我正在开发一个与 ios 中的 Healthkit 相关的应用程序。我面临一个问题。 在第一个视图控制器 HomeVC 中,当我尝试请求 healthkit 权限时,它工作正常,并显示系统屏幕以获取权限。

但同时,我必须在 viewcontoller 上设置 UI 元素的布局并询问权限,所以我在 viewDidload 方法中添加了一些代码来更新 UI。在那种情况下,当我请求权限时,权限屏幕不显示并显示白屏,并且在控制台中出现以下错误。

Error Domain=com.apple.healthkit Code=100 "授权会话计时 out" UserInfo=NSLocalizedDescription=授权会话超时

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

添加到 info.plist 文件中。添加以下内容 信息属性列表 -> 隐私 - 健康更新使用说明 说明 -> 应用想要访问您的健康包,为您提供更好的健身效果

func authorizeHealthKit() 
        
        let healthKitTypesToRead : Set<HKObjectType> = [
            HKObjectType.characteristicType(forIdentifier: HKCharacteristicTypeIdentifier.dateOfBirth)!,
            HKObjectType.characteristicType(forIdentifier: HKCharacteristicTypeIdentifier.bloodType)!,
            HKObjectType.quantityType(forIdentifier: .stepCount)!,
            HKObjectType.quantityType(forIdentifier: .activeEnergyBurned)!
        ]
        let healthKitTypes: Set = [ HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.stepCount)!, HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.activeEnergyBurned)! ]
        
        
        let healthKitTypesToWrite : Set<HKSampleType> = []
        
        if !HKHealthStore.isHealthDataAvailable() 
            
            print("error")
            return
        
        self.healthKitStore.requestAuthorization(toShare: healthKitTypesToWrite, read: healthKitTypesToRead)  (success, error) in
            print("request authorized succesfully")      
        
        
        
    

【讨论】:

以上是关于如何更新 UI 并询问 Healthkit 的权限的主要内容,如果未能解决你的问题,请参考以下文章

Healthkit 权限的自动单元测试

如何检查 HealthKit 中是不是允许读取步骤权限?

如何检查 HealthKit 中是不是允许读取步骤权限?

如何在 swift 3 中获取和更新 Healthkit 中的高度?

如何通过 healthkit 使用 Apple Watch 心率更新 iOS 应用程序? (HealthKit 同步)

如何在后台刷新的并发症上显示 HealthKit 数据?