由于info.plist
文件中缺少目的字符串,我从应用商店收到了以下邮件。
这是同时支持iOS和Android的React Native应用程序。
我的应用未请求访问用户的日历。
我认为只有在您实际请求许可时,该描述才是强制性的,即使我从未请求查看用户日历,这些描述也是必需的。
Info.plist文件中的缺少目的字符串-您的应用代码引用了一个或多个访问敏感用户数据的API。该应用程序的Info.plist文件应包含一个NSCalendarsUsageDescription密钥,该密钥具有面向用户的目的字符串,可以清晰,完整地解释您的应用程序为何需要数据。从2019年春季开始,所有提交给App Store的访问用户数据的应用都必须包含目的字符串。如果您使用的是外部库或SDK,则它们可能会引用需要目的字符串的API。尽管您的应用可能未使用这些API,但仍然需要一个目的字符串。您可以与库或SDK的开发人员联系,并要求他们发布不包含API的代码版本。了解更多信息(https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。
答案 0 :(得分:4)
有时,您安装的软件包将引用您并非真正需要的API。例如,react-native-permissions
为此,您必须为其使用的所有API添加用法说明。
react-native-permissions
软件包在此处进行了解释:https://github.com/yonahforst/react-native-permissions#app-store-submission-disclaimer
如果需要将应用程序提交到AppStore,则需要将所有* UsageDescription键添加到Info.plist中,该键的字符串值向用户说明该应用程序如何使用此数据。即使您不使用它们。
这是您的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>