ios – HealthKit – requestAuthorization(toShare:read:comp
我正在使用
Xcode 8 beta 6,我正在请求访问Health App.请求授权的方法requestAuthorization(toShare:read:completion :)在完成处理程序返回时始终生成true – 在下面的代码中成功.即使我拒绝模拟器中的所有内容,我也会得到真实的结果.
这是我处理授权的代码.我的代码中的某些内容是错误的还是这是一个Xcode错误? import Foundation import HealthKit class HealthManager { private let healthStore = HKHealthStore() class var sharedInstance: HealthManager { struct Singleton { static let instance = HealthManager() } return Singleton.instance } private var isAuthorized: Bool? = false func authorizeHealthKit(completion: ((_ success: Bool) -> Void)!) { let writableTypes: Set<HKSampleType> = [HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.distanceWalkingRunning)!,HKWorkoutType.workoutType(),HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.stepCount)!,HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.activeEnergyBurned)!,HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate)!] let readableTypes: Set<HKSampleType> = [HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.distanceWalkingRunning)!,HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate)!] guard HKHealthStore.isHealthDataAvailable() else { completion(false) return } // Request Authorization healthStore.requestAuthorization(toShare: writableTypes,read: readableTypes) { (success,error) in if success { completion(true) self.isAuthorized = true } else { completion(false) self.isAuthorized = false print("error authorizating HealthStore. You're propably on iPad (error?.localizedDescription)") } } } } 谢谢你的帮助! 解决方法
你错误地解释了那个成功旗帜意味着什么. YES表示权限屏幕已成功显示,NO表示显示权限屏幕时出错.来自Apple的HealthKit文档:
如果要检查是否有权写入数据,则需要使用authorizationStatus(for :),但请注意,您无法确定读取数据的权限.
文档在这里:https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HKHealthStore_Class/index.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |