【问题标题】:Confusing problem with an info.plist key related to HealthKit - Apple与 HealthKit 相关的 info.plist 密钥令人困惑的问题 - Apple
【发布时间】:2018-11-28 16:14:58
【问题描述】:

今天,我在使用 WatchKit / WatchKit 扩展的应用程序中遇到了一个与 Info.plist 键相关的非常奇怪的错误。这里有问题的关键是NSHealthUpdateUsageDescription。当跟踪与 Apple 提供的 HealthKit 相关的任何数据时,需要提供简短描述。

这里的棘手细节是,当“存档”所述应用的构建以准备提交时。 XCode 说“由于上述原因,需要缺少密钥 NSHealthUpdateUsageDescription

当应用程序的构建登陆 AppStore Connect 页面时,由于它的包 ID,它也指向它,然后它会消失,并且会从苹果那里收到一条错误消息。

尊敬的开发者,

我们发现您的应用最近交付的一个或多个问题, “AirTime - 数一数你的跳跃次数!”。请更正以下问题, 然后重新上传。

Info.plist 文件中缺少用途字符串 - 您的应用的代码参考 一个或多个访问敏感用户数据的 API。应用程序的 Info.plist 文件应该包含一个 NSHealthUpdateUsageDescription 键和一个 面向用户的目的字符串清楚完整地解释了为什么您的 应用程序需要数据。从 2019 年春季开始,所有提交到 访问用户数据的 App Store 将需要包含目的 字符串。如果您使用的是外部库或 SDK,它们可能会引用 需要目的字符串的 API。虽然您的应用可能不会使用这些 API,目的字符串仍然是必需的。您可以联系 库或 SDK 的开发人员,并要求他们发布 他们的代码不包含 API。学到更多 (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。

最好的问候,

App Store 团队

搜索 SO,除了处理 CFBundleIcons 等问题之外,我还没有发现任何与 info.plist 关键问题相关的帖子。这不是重复的,我觉得这是一个对未来开发人员有用的问题回答。

谢谢

【问题讨论】:

    标签: ios healthkit info.plist


    【解决方案1】:

    看起来您的代码引用了从用户访问敏感数据的 API(在您的情况下,您需要访问更新健康数据)。当您想访问这些数据时,您必须向用户征求许可。您可以通过将此键添加到 Info.plist 在 Info.plist 中执行此操作。

    您还可以添加字符串来描述您需要访问权限的原因。在 App Store 团队的回复中写道,自 2019 年春季起将需要此具有明确用途的字符串,因此您现在也应该尝试使用它。

    在这种情况下,您应该为 key NSHealthUpdateUsageDescription 设置明确目的的字符串,为什么需要更新健康数据。

    【讨论】:

    • 你之前见过这个WatchKit v3 app has disallowed Info.plist key: NSHealthShareUsageDescription我知道如果你读写数据需要NSHealthUpdateUsageDescription和NSHealthShareUsageDescription..
    【解决方案2】:

    这里的问题是.. WatchKit Info.plist 中不需要NSHealthUpdateUsageDescription and NSHealthShareUsageDescription,就像我从 Apple 错误消息中假设的那样..

    如果您正在“阅读”您正在跟踪的数据,则需要在您的 Info.plist 中为找到此问题 NSHealthUpdateUsageDescription 的任何人提供未来说明。这可能意味着多方面,但对于本示例来说,您正在跟踪数据并发布它到排行榜..你需要这把钥匙!

    NSHealthShareUsageDescription 用于“写入”正在跟踪的数据..

    希望这个问题对以后遇到同样问题的人有所帮助!

    谢谢大家。

    【讨论】:

      【解决方案3】:

      如果我的独立 WatchOS 应用可以访问 Health Kit,这会有所帮助:

      1. 我在文件夹 [MyApp] WatchKit Extension 的 Info.plist 文件中添加了键“隐私 - 健康共享使用说明”和“隐私 - 健康更新使用说明”以及一些文本作为值。

      2. 然后我在文件夹 [MyApp] WatchKit Extension 的同一级别上创建了另一个文件夹 [MyApp]。我将 Info.plist 文件从文件夹 [MyApp] WatchKit Extension 复制到新文件夹 [MyApp] 并删除了除上述两个之外的所有密钥。

      3. 然后在 Targets 下(当您在 Xcode 左侧顶部的 Project Navigator 中单击项目名称时会到达那里),我单击第一个目标(MyApp)并在 Packaging 下找到键“Info. plist 文件”我添加了新 Info.plist 文件的路径 - [Myapp]/Info.plist

      我清理了构建文件夹并在尝试再次构建时出现错误(在顶部菜单产品 - 构建下) - 一些新错误: (错误:多个命令产生 '[...]/Info.plist': [...]

      我重新启动了 XCode,再次清理了构建文件夹并再次单击了构建。这次我被问到是否可以清理某些东西并接受。

      然后它起作用了。

      注意:过去,我在 [MyApp] WatchKit App 的 Info.plist 文件中也有上面提到的键,我记得它引起了问题。所以在那个文件中我没有这两个键。

      我的答案是基于这个:https://developer.apple.com/forums/thread/122660?answerId=382719022#382719022 后来我也发现了这个post

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多