HealthKit 仅在 Swift 2.0 中启动一次
Posted
技术标签:
【中文标题】HealthKit 仅在 Swift 2.0 中启动一次【英文标题】:HealthKit is launching only once in Swift 2.0 【发布时间】:2016-05-12 09:39:17 【问题描述】:我已将 HealthKit 框架集成到我的应用程序中。 HealthKit 仅从应用程序启动一次。以下代码位于为 HealthKit 创建的单例类中。
func requestAuthorization()
if (HKHealthStore .isHealthDataAvailable() == false)
return
let healthKitTypesToRead : Set = [
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierFitzpatrickSkinType)!,
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBiologicalSex)!,
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBloodType)!
]
let healthKitTypesToWrite : Set = [
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyFatPercentage)!,
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMassIndex)!,
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight)!,
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass)!,
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierLeanBodyMass)!
]
self.healthStore.requestAuthorizationToShareTypes(healthKitTypesToWrite, readTypes: healthKitTypesToRead)
(success, error) -> Void in
if !success
print("error")
requestAuthorization
方法正在调用视图控制器的按钮操作,
@IBAction func healthIntegrationButton(sender: UIButton)
HealthKitHandler.shared.requestAuthorization()
一旦我关闭了 healthkit 应用程序,按钮操作就不会发生任何操作。再次,如果我从模拟器中删除应用程序并单击按钮 healthkit 应用程序将启动。
谁能帮助我们上面的代码有什么问题。提前致谢。
【问题讨论】:
【参考方案1】:如果授权已经被授予,应用程序将不会再次显示它。它只会直接调用成功处理程序。
将您的 completion
处理程序更改为:
self.healthStore.requestAuthorizationToShareTypes(healthKitTypesToWrite, readTypes: healthKitTypesToRead)
(success, error) -> Void in
if success
print("success!")
else
print("error")
你应该看到区别了。
【讨论】:
所以如果我想再次启动应用程序我应该如何继续 @suji 你没有做错什么。始终调用授权代码,但不要期望它向用户显示授权对话框。以上是关于HealthKit 仅在 Swift 2.0 中启动一次的主要内容,如果未能解决你的问题,请参考以下文章
Swift 2.0:读取 HealthKit 心率数据 - 在展开 Optional 时意外发现 nil
Swift 2.0:读取 HealthKit 心率数据 - 在展开 Optional 时意外发现 nil
swift 2.0 healthkit requestAuthorizationToShareTypes - 表达式类型不明确,没有更多上下文
Realm Swift 2.0:“不允许操作”- 仅在设备上