错误Appstore连接:Info.plist文件中缺少目的字符串

Joh*_*doe 135 info.plist app-store appstore-approval ios expo

我已将我的应用程序提交给Appstore connect进行审核.虽然该应用程序仍在审核中,但我收到一封电子邮件通知我,我必须修复错误.这是消息的内容:

__PRE__

我的应用程序完全使用expo构建,我不知道如何访问和修改Info.plist.

任何的想法 ?

Ant*_*Pak 50

即使您收到此消息,也可以提交您的应用程序!

即使应用程序没有使用位置功能,我昨天也遇到了同样的问题.它可能与项目中包含的具有此可选功能的某个框架有关.

我可以证实,我的应用程序已被批准,即使没有NSLocationAlwaysUsageDescriptionNSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription

事实上,正如Apple在邮件中所述:

从2019年春季开始,提交给访问用户数据的App Store的所有应用都需要包含目的字符串.

因此,唯一要做的就是在项目中添加此键(现在更好,以便您不会忘记),以便它将包含在您的下一次更新中.

只需在你的NSLocationAlwaysAndWhenInUseUsageDescription,with NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescriptionas键中添加两个新条目,并简要描述为什么使用它们作为值(即使你没有真正使用它们......).

  • 在2019年4月的编辑中,您确定您不反对弃用折旧吗?从我看到的内容中,NSLocationUsageDescription被弃用了。在这里查看:https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW18 (2认同)

小智 45

我在商店里有一些应用程序,我试图为QA分发一个版本,同样的事情发生在两个不同的应用程序中.我认为这是接受构建上传到Appstore connect的新标准.

解决方案很简单,在.plist文件中添加以下行.

<key>NSLocationAlwaysUsageDescription</key>?
<string>custom message</string>?
<key>NSLocationWhenInUseUsageDescription</key>?
<string>custom message</string>

PS:在我的情况下没有使用任何位置功能,但我添加了这些行以符合Appstore连接指南.顺便收到那封电子邮件后,即使他们说构建它有一些问题,我也可以测试它.

我希望这对你们有用.

  • 哇,我刚刚得到这个,意识到每个人都是这样做的! (5认同)

gwa*_*ton 36

如果您正在使用Expo,可以通过向app.json添加infoPlist来添加求解,如下所示:

  "expo": {
     "ios": {
       "bundleIdentifier": "com.app.myapp",
       "infoPlist": {
         "NSLocationAlwaysUsageDescription": "Some message to appease Apple.",
       },
     },
   }
Run Code Online (Sandbox Code Playgroud)

世博会文件

  • 实际上它不是**"一些消息来安抚Apple",而是让用户知道你在这种情况下使用用户生成的数据(位置)做了什么.这是一个隐私问题,我认为对您的应用用户公平是好的. (18认同)
  • 知道了!我在想新手,可能会想离开它!我不想听起来脾气暴躁:)干杯! (4认同)
  • 如果我们不收集位置数据,应该输入什么文字?我们需要编造谎言:S (2认同)

Jua*_*rez 16

这是苹果的新要求,即使你不使用位置.如果要在Xcode中添加权限,请查找"隐私 - 位置使用说明"和"隐私 - 使用时的位置使用说明",并为每个用户键入自定义字符串.

在此输入图像描述

  • 因此,如果我不使用这些功能,那我该在那写些谎言,例如“收集位置以备将来使用”之类的东西? (2认同)
  • 好的,目标 -&gt; 信息 -&gt; 自定义 ios 目标属性就是确切的位置 (2认同)

Sac*_*yal 11

为了更加简化,您可以在info.plist中添加这些行。之所以会出现这些错误,是因为从2019年春季开始,提交给App Store的所有访问用户数据的应用都必须包含用途字符串。

  1. 打开info.plist作为源代码。
  2. 在您的plist中添加以下几行

    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    
    Run Code Online (Sandbox Code Playgroud)

  • 我必须删除&lt;key&gt;标记中的多余空格,然后它才能工作。 (2认同)

小智 8

##在info.plist文件中使用此密钥

NSLocationAlwaysUsageDescription您的位置是xyz福利所必需的NSLocationWhenInUseUsageDescription您的位置是xyz福利所必需的


seb*_*erc 7

我们收到了同样的电子邮件,我们根本没有使用CoreLocation.快速搜索后,我们发现Parse SDK可以使用CoreLocation.在Apple的电子邮件中,他们清楚地说:

__CODE__

这意味着您的代码或任何其他库或SDK可以使用CoreLocation的那一刻,即使您不使用它,您也需要为__CODE__和提供隐私说明__CODE__.

它也是Apple的新产品,现在它只是一个警告,但是需要从2019年春季开始提交新的提交.

  • 并不是的.除非在代码中的某处调用`CLLocationManager.requestWhenInUseAuthorization()`,否则不会显示要求您使用本地化的警报.Apple分析了每个应用程序代码,看看是否可以调用这样的函数.如果从未调用过,则不会显示警报. (3认同)

Sac*_*yal 6

发生此问题是因为您尚未包括

 <NSLocationAlwaysUsageDescription>
Run Code Online (Sandbox Code Playgroud)

为您的应用。当我尝试在AppStore上提交我的应用程序时,我遇到了同样的问题。处理完应用程序后,我收到了相同的邮件。我刚刚添加了说明,现在已解决。

希望这可以帮助。


ing*_*nti 6

有以下几种情况:

NSLocationAlwaysAndWhenInUseUsageDescription (iOS>11)
NSLocationWhenInUseUsageDescription          (iOS>11)
NSLocationAlwaysUsageDescription             (iOS<=10)
NSLocationUsageDescription                   (seems very old, iOS8?)
Run Code Online (Sandbox Code Playgroud)

苹果声明:

NSLocationWhenInUseUsageDescription密钥和NSLocationAlwaysAndWhenInUseUsageDescription密钥添加到您的Info.plist文件中。

和:

如果您的应用支持iOS 10及更低版本,请添加 NSLocationAlwaysUsage

NSLocationUsageDescription似乎已经死了,ADC网站中唯一的参考是:https : //developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

因此请确定先使用3。


小智 5

“Info.plist 文件中缺少目的字符串。您的应用程序的代码引用了一个或多个访问敏感用户数据的 API。应用程序的 Info.plist 文件应包含一个 NSLocationAlwaysUsageDescription 键,其中包含一个面向用户的目的字符串,清楚而完整地解释您的应用程序需要的原因数据。从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用都需要包含一个用途字符串。如果您使用的是外部库或 SDK,它们可能会引用需要用途字符串的 API。而您的应用可能不会使用这些 API,但仍然需要一个用途字符串。您可以联系库或 SDK 的开发人员,并要求他们发布不包含这些 API 的代码版本。

Info.plist作为源代码打开。
在您的 plist 中添加以下几行

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
Run Code Online (Sandbox Code Playgroud)