由于在Info.plist文件中缺少目的字符串,react native iOS应用程序被App Store拒绝。

6
我收到了来自AppStore的邮件,因为info.plist文件中缺少目的字符串。
这是一个支持iOS和Android的React Native应用程序。
我的应用程序没有请求访问用户的日历。
我以为只有在实际请求权限时才需要描述,或者即使我从未请求查看用户日历,这些描述也是强制性的。
引用如下: 在Info.plist文件中缺少目的字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的API。该应用程序的Info.plist文件应包含一个NSCalendarsUsageDescription密钥,其中包含一个用户可见的目的字符串,清楚地解释为什么您的应用程序需要这些数据。从2019年春季开始,所有访问用户数据的应用程序都必须包括一个目的字符串。如果您正在使用外部库或SDK,则它们可能引用需要目的字符串的API。虽然您的应用程序可能不会使用这些API,但仍需要一个目的字符串。您可以联系库或SDK的开发人员,并请求他们发布一个不包含API的版本。了解更多信息(https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。

1
苹果已经审核了您的应用程序,并发现它引用了日历框架。您需要提供一个字符串来解释您的应用程序如何使用日历,或者您需要删除对该框架的引用(该框架可能在您使用的模块中)。 - Paulw11
你必须说明应用程序为什么要请求访问用户的日历数据。例如:如果您想在用户日历上的特定日期添加提醒,则在info.plist中提到相同的内容,如“请允许appName访问您的日历以添加提醒”。 - Sumeet.Jain
1个回答

12
有时候,你安装的包会引用一些你并不需要的API。例如,react-native-permissions就是这样的一个例子,你必须为他们使用的所有API添加使用说明。 react-native-permissions包在这里解释了这一点:https://github.com/yonahforst/react-native-permissions#app-store-submission-disclaimer 如果你需要将应用程序提交到AppStore中,你需要在Info.plist文件中添加所有*UsageDescription键,并提供一个字符串值来解释应用程序如何使用这些数据。即使你并没有使用它们。
以下是Info.plist文件的示例:
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Some description</string>
<key>NSCalendarsUsageDescription</key>
<string>Some description</string>
<key>NSCameraUsageDescription</key>
<string>Some description</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Some description</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Some description</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Some description</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Some description</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>Some description</string>
<key>NSAppleMusicUsageDescription</key>
<string>Some description</string>
<key>NSMotionUsageDescription</key>
<string>Some description</string>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接