Cordova Info.plist 缺少 NSCameraUsageDescription 键
Cordova Info.plist NSCameraUsageDescription key is missing
经过最近的更改后,如果您的应用程序试图访问隐私敏感数据,Apple 需要特定的密钥。所以我在 config.xml 中添加了 NSCameraUsageDescription 键,如下所示:
<platform name="ios">
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
<string>We are using a camera to </string>
</config-file>
</platform>
然后
cordova build ios --release --device
生成的 ipa 显然在 info.plist 中没有正确的信息。感觉好像少了什么。
问题 1:
我需要在 config.xml 中输入什么来解决 NSCameraUsageDescription 问题?
问题 2:
是否可以对该字符串使用本地化?
谢谢!
新答案:
从 Cordova CLI 6.5.0 开始,您可以使用 config.xml
中的 edit-config
标记直接写入 info.plist
,如下所示:
<string>your usage message</string>
</edit-config>
但请确保您使用的是最新版本的插件,否则值可能会被插件变量覆盖。
对于本地化,您可以使用 resource-file
标签和 InfoPlist.strings 文件,就像在这个插件中一样(但您不需要插件,[=45= 支持资源文件标签])
https://github.com/MBuchalik/cordova-plugin-ios-permissions
旧答案:
您还不能使用 config-file
标签在 config.xml
的 info.plist
上写入(正在处理中)
最新版本的相机插件允许您在安装插件时添加NSCameraUsageDescription
cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="your usage message"
目前无法本地化此字符串
以下是我自己的研究结果:
- 是的,您可以从 config.xml 文件中修改 info.plist
使用配置文件标签,但是你必须为此使用一个插件
(cordova custom config) 并认真按照说明进行操作。
- 但是,可能更好的选择是使用 plugin.xml 来做同样的事情。您可以在此处阅读更多相关信息
- @jcesarmobile 提到的另一个选项 - 当前的相机插件可能像 cordova plugin camera 一样支持它(此解决方案特定于插件)
- 是的,可以 localize a string inside the info.plist file 但是 它需要使用 xcode。我不确定如何使用 Cordova config.xml 或 plugin.xml[=40= 本地化 info.plist 文件中的字符串]
如有错误请指正。感谢直接来自 config.xml 的有关本地化的更多信息。
就我个人而言,我不喜欢使用自定义插件来修改 info.plist 文件的想法。感觉就像我使用的每一个新插件都让我的应用程序变得越来越脆弱。 :)
如果愿意,您可以在 cordova 项目中手动编辑 .plist 文件。这对我有用,但由于这是一个生成的文件,我确实担心在某些时候我的更改可能会被覆盖。
但是要帮忙!
.plist 文件应该位于 /platforms/ios/[Cordova Project Name]/[Cordova Project Name]-Info.plist
内的 Cordova 项目中。您还可以在 Xcode 中打开项目,然后单击左侧的放大镜图标,这样您就可以在项目中搜索文件。如果您输入 info.plist
,它应该 return 显示如下内容的结果:
INFOPLIST_FILE = [Some]/[Path]/[Cordova Project Name]-Info.plist
此路径应该与您的 Cordova 项目安装相关,因此在您的项目中搜索应该会引导您找到正确的文件。
我在编辑器中打开了这个文件,并在第一个 <dict>
标签内添加了以下行:
<key>NSCameraUsageDescription</key>
<string>Uses camera to allow video chatting between two clients</string>
我能够提交并显示我的构建,并且留在 itunesconnect 中。目前仍在等待应用审核。
我做了 运行 一个 cordova prepare ios
只是为了测试我的更改是否会被覆盖而他们没有,所以看起来你应该能够做到这一点而不用担心它但是厌倦了其他开发人员安装您的应用程序并 运行 遇到同样的问题。我刚刚将更新后的 .plist 文件复制到我的存储库的根目录中,并在自述文件中记下了它。
$ cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="this app will use your camera" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="this app will access to your photo library"
您需要阅读 ./plugins/plugin-what-ever/plugin.xml 的内部内容以查看支持的键名类型。
转到您的项目>>在那里打开终端
和运行这个命令
cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="Allow the app to use your camera" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="Allow the app to access your photos"
您可以根据自己的需要不断修改值"Allow the app to use your camera" "Allow the app to access your photos"。
首先,在 apple 拒绝我的 ipa 后,这对我适用于 Cli-7.1.0。
1) 在你的代码中,如果你使用 for ex。 cordova-plugin-barcodescanner 和 cordova-plugin-camera 和 cordova-plugin-ios-camera-permissions 所有变量 CAMERA_USAGE_DESCRIPTION, PHOTOLIBRARY_USAGE_DESCRIPTION 里面应该有相同的字符串。如果其中一个不同,苹果会拒绝你的 ipa,因为 phonegap 使用默认变量。
ej:
<plugin name="cordova-plugin-ios-camera-permissions" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
</plugin><!-- spec="1.0.3" !-->
<plugin name="cordova-plugin-camera" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<gap:plugin name="cordova-plugin-image-picker" source="npm" />
<gap:plugin name="cordova-plugin-base64-joewsh" source="npm" /> <!-- convertir a base64 los files !-->
<gap:plugin name="cordova-plugin-barcodescanner" source="npm" spec="0.7.0" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
</gap:plugin>
2) 添加这段代码(记得在变量中使用相同的字符串,正如我之前提到的):
<platform name="ios">
<edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge" overwrite="true">
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge" overwrite="true" >
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge" overwrite="true">
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
</platform>
对于 iOS 10/11,您可以使用 cordova-plugin-ios-camera-permissions 作为快捷方式。
为如何提供自定义消息提供默认值和清晰的文档。
cordova plugin add cordova-plugin-ios-camera-permissions --save
如果您已经安装了 iOS 平台,则可能需要删除和 re-adding。
$ cordova platform rm ios
$ cordova platform add ios
我搜索了很多时间,尝试了很多解决方案都没有成功。
最后,我在 Info 选项卡中用 Xcode 定义了这些数据
Privacy - Camera usage description
它节省了我很多时间。
经过最近的更改后,如果您的应用程序试图访问隐私敏感数据,Apple 需要特定的密钥。所以我在 config.xml 中添加了 NSCameraUsageDescription 键,如下所示:
<platform name="ios">
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
<string>We are using a camera to </string>
</config-file>
</platform>
然后
cordova build ios --release --device
生成的 ipa 显然在 info.plist 中没有正确的信息。感觉好像少了什么。
问题 1: 我需要在 config.xml 中输入什么来解决 NSCameraUsageDescription 问题? 问题 2: 是否可以对该字符串使用本地化?
谢谢!
新答案:
从 Cordova CLI 6.5.0 开始,您可以使用 config.xml
中的 edit-config
标记直接写入 info.plist
,如下所示:
<string>your usage message</string>
</edit-config>
但请确保您使用的是最新版本的插件,否则值可能会被插件变量覆盖。
对于本地化,您可以使用 resource-file
标签和 InfoPlist.strings 文件,就像在这个插件中一样(但您不需要插件,[=45= 支持资源文件标签])
https://github.com/MBuchalik/cordova-plugin-ios-permissions
旧答案:
您还不能使用 config-file
标签在 config.xml
的 info.plist
上写入(正在处理中)
最新版本的相机插件允许您在安装插件时添加NSCameraUsageDescription
cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="your usage message"
目前无法本地化此字符串
以下是我自己的研究结果:
- 是的,您可以从 config.xml 文件中修改 info.plist 使用配置文件标签,但是你必须为此使用一个插件 (cordova custom config) 并认真按照说明进行操作。
- 但是,可能更好的选择是使用 plugin.xml 来做同样的事情。您可以在此处阅读更多相关信息
- @jcesarmobile 提到的另一个选项 - 当前的相机插件可能像 cordova plugin camera 一样支持它(此解决方案特定于插件)
- 是的,可以 localize a string inside the info.plist file 但是 它需要使用 xcode。我不确定如何使用 Cordova config.xml 或 plugin.xml[=40= 本地化 info.plist 文件中的字符串]
如有错误请指正。感谢直接来自 config.xml 的有关本地化的更多信息。
就我个人而言,我不喜欢使用自定义插件来修改 info.plist 文件的想法。感觉就像我使用的每一个新插件都让我的应用程序变得越来越脆弱。 :)
如果愿意,您可以在 cordova 项目中手动编辑 .plist 文件。这对我有用,但由于这是一个生成的文件,我确实担心在某些时候我的更改可能会被覆盖。
但是要帮忙!
.plist 文件应该位于 /platforms/ios/[Cordova Project Name]/[Cordova Project Name]-Info.plist
内的 Cordova 项目中。您还可以在 Xcode 中打开项目,然后单击左侧的放大镜图标,这样您就可以在项目中搜索文件。如果您输入 info.plist
,它应该 return 显示如下内容的结果:
INFOPLIST_FILE = [Some]/[Path]/[Cordova Project Name]-Info.plist
此路径应该与您的 Cordova 项目安装相关,因此在您的项目中搜索应该会引导您找到正确的文件。
我在编辑器中打开了这个文件,并在第一个 <dict>
标签内添加了以下行:
<key>NSCameraUsageDescription</key>
<string>Uses camera to allow video chatting between two clients</string>
我能够提交并显示我的构建,并且留在 itunesconnect 中。目前仍在等待应用审核。
我做了 运行 一个 cordova prepare ios
只是为了测试我的更改是否会被覆盖而他们没有,所以看起来你应该能够做到这一点而不用担心它但是厌倦了其他开发人员安装您的应用程序并 运行 遇到同样的问题。我刚刚将更新后的 .plist 文件复制到我的存储库的根目录中,并在自述文件中记下了它。
$ cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="this app will use your camera" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="this app will access to your photo library"
您需要阅读 ./plugins/plugin-what-ever/plugin.xml 的内部内容以查看支持的键名类型。
转到您的项目>>在那里打开终端
和运行这个命令
cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="Allow the app to use your camera" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="Allow the app to access your photos"
您可以根据自己的需要不断修改值"Allow the app to use your camera" "Allow the app to access your photos"。
首先,在 apple 拒绝我的 ipa 后,这对我适用于 Cli-7.1.0。
1) 在你的代码中,如果你使用 for ex。 cordova-plugin-barcodescanner 和 cordova-plugin-camera 和 cordova-plugin-ios-camera-permissions 所有变量 CAMERA_USAGE_DESCRIPTION, PHOTOLIBRARY_USAGE_DESCRIPTION 里面应该有相同的字符串。如果其中一个不同,苹果会拒绝你的 ipa,因为 phonegap 使用默认变量。
ej:
<plugin name="cordova-plugin-ios-camera-permissions" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
</plugin><!-- spec="1.0.3" !-->
<plugin name="cordova-plugin-camera" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<gap:plugin name="cordova-plugin-image-picker" source="npm" />
<gap:plugin name="cordova-plugin-base64-joewsh" source="npm" /> <!-- convertir a base64 los files !-->
<gap:plugin name="cordova-plugin-barcodescanner" source="npm" spec="0.7.0" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
</gap:plugin>
2) 添加这段代码(记得在变量中使用相同的字符串,正如我之前提到的):
<platform name="ios">
<edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge" overwrite="true">
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge" overwrite="true" >
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge" overwrite="true">
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
</platform>
对于 iOS 10/11,您可以使用 cordova-plugin-ios-camera-permissions 作为快捷方式。
为如何提供自定义消息提供默认值和清晰的文档。
cordova plugin add cordova-plugin-ios-camera-permissions --save
如果您已经安装了 iOS 平台,则可能需要删除和 re-adding。
$ cordova platform rm ios
$ cordova platform add ios
我搜索了很多时间,尝试了很多解决方案都没有成功。
最后,我在 Info 选项卡中用 Xcode 定义了这些数据
Privacy - Camera usage description
它节省了我很多时间。