Ios 与HealthKit相关的info.plist键存在混淆问题-苹果

Ios 与HealthKit相关的info.plist键存在混淆问题-苹果,ios,healthkit,info.plist,Ios,Healthkit,Info.plist,今天,我在一个使用WatchKit/WatchKit扩展的应用程序中遇到了一个与Info.plist key有关的非常奇怪的错误。这里讨论的关键是NSHealthUpdateUsageDescription。当跟踪与苹果提供的数据相关的任何数据时,这需要一个简短的描述 这里棘手的细节是,当“归档”上述应用程序的构建以准备提交时。XCode表示,出于上述原因,需要“缺少密钥NSHealthUpdateUsageDescription” 当应用程序的构建登录到AppStore Connect页面时,

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

这里棘手的细节是,当“归档”上述应用程序的构建以准备提交时。XCode表示,出于上述原因,需要“缺少密钥
NSHealthUpdateUsageDescription

当应用程序的构建登录到AppStore Connect页面时,由于其bundle id,它的指向也会消失,并且会收到来自苹果的错误消息

尊敬的开发商:

我们发现您的应用程序最近交付时存在一个或多个问题, “广播时间-数一数你的跳跃!“。请更正以下问题, 然后再次上传

Info.plist文件中缺少目的字符串-应用程序的代码引用 一个或多个访问敏感用户数据的API。应用程序的Info.plist 文件应包含带有 面向用户的目的字符串清楚完整地解释了 应用程序需要数据。从2019年春季开始,所有提交给 访问用户数据的应用商店需要包含一个目的 如果您使用的是外部库或SDK,它们可能引用 需要用途字符串的API。而您的应用程序可能不使用这些 API,仍然需要一个目的字符串。您可以联系 库或SDK的开发人员,并请求他们发布 他们的代码不包含API。了解更多 ()

致以最良好的祝愿

应用商店团队

搜索时,我没有发现任何与info.plist相关的帖子,除了处理CbundLeicons等问题外,还有其他关键问题。这不是重复的问题,我觉得这是一个对未来开发者有用的问题


谢谢

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

您还可以添加字符串,描述您为什么需要请求访问的内容。App Store团队在回复中写道,自2019年春季起,您将需要该字符串,且该字符串具有明确的用途,因此您现在就应该尝试使用它

在这种情况下,您应该为key
NSHealthUpdateUsageDescription
设置具有明确用途的字符串,说明您需要更新健康数据的原因


您的代码似乎引用了从用户处访问敏感数据的API(在您的情况下,您需要访问更新的健康数据)。当您想要访问此数据时,您必须向用户请求权限。您可以在Info.plist中通过将此键添加到Info.plist来完成此操作

您还可以添加字符串,描述您为什么需要请求访问的内容。App Store团队在回复中写道,自2019年春季起,您将需要该字符串,且该字符串具有明确的用途,因此您现在就应该尝试使用它

在这种情况下,您应该为key
NSHealthUpdateUsageDescription
设置具有明确用途的字符串,说明您需要更新健康数据的原因


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

如果您正在“阅读”您正在跟踪的数据,则需要在您的Info.plist中为任何发现此问题的人提供未来提示。。这可能意味着多项内容,但在本例中,假设您正在跟踪数据并将其发布到排行榜。。您需要此密钥

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

希望这个问题对将来遇到同样问题的人有所帮助


谢谢大家。

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

如果您正在“阅读”您正在跟踪的数据,则需要在您的Info.plist中为任何发现此问题的人提供未来提示。。这可能意味着多项内容,但在本例中,假设您正在跟踪数据并将其发布到排行榜。。您需要此密钥

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

希望这个问题对将来遇到同样问题的人有所帮助


谢谢大家。

如果我的独立WatchOS应用程序可以访问健康工具包,这有助于:

  • 我在[MyApp]WatchKit扩展名文件夹中的Info.plist文件中添加了密钥“Privacy-Health Share Usage Description”和“Privacy-Health Update Usage Description”,其中包含一些文本作为值

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

  • 然后在目标下(当您在Xcode左侧顶部的项目导航器中单击您的项目名称时,您就会到达目标),我单击了第一个目标(MyApp),并在打包键“Info.plist File”下添加了新Info.plist文件的路径-[MyApp]/Info.plist

  • 我清理了build文件夹,在尝试再次构建时(在顶部菜单Product-build下)出现错误-一些新错误: (错误:多个命令生成“[…]”/Info.plist“:[…]

    我重新启动了XCode,清理了构建文件夹a