gpt4 book ai didi

ios - 添加新数据并设置 hkObserverQuery 时,HealthKit 不会启动应用程序

转载 作者:行者123 更新时间:2023-11-28 06:08:15 29 4
gpt4 key购买 nike

我试图让 HealthKit 在有新数据可用时启动我的应用程序。因此,我尝试按照我发现的这个示例将 HKObserverQuery 与后台交付一起使用 on GitHub .

我为我的项目启用了后台模式功能,并确保 Info.plist 中的 Required background modes 只有 1 项

我正在使用 Xcode 和 IOS 10。我确实意识到某些数据类型有时间限制,所以我通过将爬升的航类添加到模拟器上的健康应用程序并查看是否调用了打印方法来进行测试。但什么也没有发生。我还尝试在 AppDelegate 的 application() 方法中设置断点,但它仅在应用程序首次启动时执行。在我将条目放入健康应用程序后,它没有被调用。

我在这里做错了什么?或者有什么方法可以查看 Healthkit 是否正在尝试启动我的应用程序?

这是我的 AppDelegate 和其他相关文件

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
let manager = HealthKitManager()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
manager.hkAccessor.setUpObserverQuery(){ samples in
for sample in samples!{
print("\(sample.value) \(sample.identifier)")
}
}
return true
}

健康包访问器:

func setUpObserverQuery(completion:@escaping ([QuantitySample]?) -> ()) {
for type in getDataTypesToRead() {
guard let sampleType = type as? HKSampleType else { print("\(type) is not an HKSampleType"); continue }
let query = HKObserverQuery(sampleType: sampleType, predicate: nil) {
[weak self] query, completionHandler, error in
if error != nil {
print("*** An error occured. \(error!.localizedDescription) ***")
return
}
guard let strongSelf = self else { return }
strongSelf.queryForDataType(type:type) { samples in
completion(samples)
}
completionHandler()
}
executeQuery(query: query)
healthStore.enableBackgroundDelivery(for: type, frequency: .immediate) { (success: Bool, error: Error?) in
if success{
print("\(type) registered for background delivery")
}
else {
print("\(type) registered for background delivery")
}
}
}
}

最佳答案

经过 12 小时的尝试,我发现我的方法确实有效。只是不在模拟器上。它在真实设备上运行有一些延迟,这是合理的。我看到有人说 HealthKit 不能在数据更新后立即通知你的应用程序,而是它会找到系统不忙的机会来唤醒你的应用程序。

关于ios - 添加新数据并设置 hkObserverQuery 时,HealthKit 不会启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47544004/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com