我正在使用HealthKit集成构建健身应用程序。最终,我也想使用CloudKit来实现a)允许数据冗余,但主要是b)提供一些社交功能,这些功能要求至少将数据临时存储在iCloud中。我希望能够完全依靠HealthKit来获取应用程序中的数据,但是我认为,如果永久撤销或不授予HealthKit权限,则必须使用备用数据模型来持久保存数据。我选择坚持使用核心数据。我的问题是如何使我的核心数据存储和HealthKit存储保持同步。我已经在GitHub上搜索了一个示例,并在此处搜索了相关问题,但是找不到任何有用的示例。最终,我将使用CloudKit同步Core Data中的数据,但是Core Data中介真的必要吗?关于App Store审查指南27.3 使用HealthKit框架存储用户健康的应用 iCloud中的信息将被拒绝我的意思是,任何不是由您的应用创建的健康数据都无法存储在iCloud中。有许多应用程序将运行状况数据存储在第三方服务器(即RunKeeper)上。此外,如果没有HealthKit权限,我将被允许在iCloud中存储由我的应用创建的健康数据。如果您从HealthKit中获取第三方数据,然后尝试将其放入iCloud,那么您将被拒绝。 最佳答案 这里有几个问题,所以我将尝试按顺序回答。 ...如何使我的核心数据存储和HealthKit存储保持同步? 因此,您需要担心两种应用程序模式以获取数据更新:前台和后台。在前台时,您可以使用HKObserverQuery,它在获取所需数据方面提供了相当大的灵活性。在跨线程边界传递数据时(因为观察者查询在后台队列上运行),通常会出现警告。相关文档:HKObserverQuery Docs在后台,您必须使用enableBackgroundDeliveryForType(_:frequency:withCompletion:)注册后台唤醒。这将以(或接近)指定的频率唤醒您的应用程序,这时您将需要跳过所有必要的循环以加载Core Data堆栈并进行更新。相关文档:HKHealthStore Background Handling Docs ...核心数据中介真的必要吗? 不可以,实际上,使用Core Data可能对您的使用来说完全是矫kill过正。我通常建议不要在应用程序一开始就实现核心数据。存在性能问题,背景唤醒问题,更改模式时的模式迁移问题以及iCloud Core Data同步问题(大多数问题已从iOS 9开始解决,但偶尔仍会出现)。最重要的是,Apple在新项目中包含Core Data的“模板”通常不遵循集成Core Data的最佳实践准则。进行一些Google搜索,然后看看Marcus Zarra关于该主题的书籍。综上所述,不使用Core Data意味着必须编写更多代码才能使iCloud与您选择的数据存储同步,因此很难就“正确”的使用方法提出建议。 我的意思是,任何不是由您的应用创建的健康数据都无法存储在iCloud中。 不正确以面值为准。如果Apple看到您已请求访问HealthKit并配置了iCloud访问权限,则您可能会受到审查,很可能会遭到拒绝。他们在这方面对用户隐私非常敏感,我认为正确。关于Runkeeper的说明虽然准确无误,但也存在缺陷,因为Runkeeper(上次我检查过)不使用iCloud,因此不受此限制,因此类推是有缺陷的。另外,根据Apple的其他指南,无论其他应用程序执行或不执行任何操作,都不会影响您的应用程序的审核状态。简而言之,我会避免将用户的健康数据存储在iCloud中。使用其他提供程序或您自己的服务器。
10-07 12:38
查看更多