首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >苹果HealthKit授权无效(Xcode 13.3) -提示授权请求失败

苹果HealthKit授权无效(Xcode 13.3) -提示授权请求失败
EN

Stack Overflow用户
提问于 2022-03-16 10:27:48
回答 1查看 487关注 0票数 0

我对苹果的HealthKit授权有个问题。在将Xcode更新到13.3之前,一切都很好。看来,即使我明确声明要请求授权onAppear of ContentView,也不会触发授权请求。这是ContentView的代码

代码语言:javascript
运行
复制
import SwiftUI

struct ContentView: View {
  @EnvironmentObject var firebaseManager: FirebaseManager
  @EnvironmentObject var healthkitManager: HealthKitManager
  
  var body: some View {
    NavigationView {
      if firebaseManager.signedIn {
        HomePageView()
      } else {
        SignInView()
      }
    }
    .onAppear {
      healthkitManager.authorizeHealthKit()
      firebaseManager.signedIn = firebaseManager.isSignedIn }
  }
}

HealthKitManager中的函数如下所示:

代码语言:javascript
运行
复制
  func authorizeHealthKit() {   
    //Check to see if HealthKit Is Available on this device
    guard HKHealthStore.isHealthDataAvailable() else {
      print("HealthKit data not available on this device")
      return
    }
    
    // Set types to read and write in HealthStore
    let typesToRead: Set = [
      HKObjectType.characteristicType(forIdentifier: .dateOfBirth)!,
      HKObjectType.quantityType(forIdentifier: .bloodGlucose)!,
      HKObjectType.quantityType(forIdentifier: .insulinDelivery)!,
      HKObjectType.quantityType(forIdentifier: .dietaryCarbohydrates)!,
      HKObjectType.quantityType(forIdentifier: .stepCount)!,
      HKObjectType.quantityType(forIdentifier: .heartRate)!,
      HKObjectType.quantityType(forIdentifier: .appleExerciseTime)!,
    ]
    
    let typesToWrite: Set = [
      HKObjectType.quantityType(forIdentifier: .bloodGlucose)!,
      HKObjectType.quantityType(forIdentifier: .insulinDelivery)!,
      HKObjectType.quantityType(forIdentifier: .dietaryCarbohydrates)!,
    ]
    // Request authorization for those quantity types.
    healthStore.requestAuthorization(toShare: typesToWrite, read: typesToRead) { (success, error) in }
  }

我尝试在项目文件中的Privacy - Health Update Usage Description选项卡中添加一些字符串值的键Privacy - Health Share Usage DescriptionPrivacy - Health Share Usage Description,但仍然没有。当我构建应用程序时,我在控制台中得到了这样的信息:

代码语言:javascript
运行
复制
[auth] FAILED prompting authorization request to share (
    HKQuantityTypeIdentifierBloodGlucose,
    HKQuantityTypeIdentifierDietaryCarbohydrates,
    HKQuantityTypeIdentifierInsulinDelivery
), read (
    HKCharacteristicTypeIdentifierDateOfBirth,
    HKQuantityTypeIdentifierHeartRate,
    HKQuantityTypeIdentifierBloodGlucose,
    HKQuantityTypeIdentifierInsulinDelivery,
    HKQuantityTypeIdentifierDietaryCarbohydrates,
    HKQuantityTypeIdentifierAppleExerciseTime,
    HKQuantityTypeIdentifierStepCount
)

我读了一些文章,尝试了多种可能的解决方案,重新启动了我的Mac,但是一切都没有成功。因为我有两个环境对象,应该有问题吗?我会感激任何想法..。

EN

Stack Overflow用户

发布于 2022-06-17 18:34:26

您必须向目标添加HealthKit功能。

capabilities

  • tap

  • 在xcode

  • 中选择您的项目,选择在xcode

中选择的目标,选择签名,并在+ Capability

  • search上为HealthKit

  • add选择它到项目
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71495419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档