缺少Cordova Info.plist NSCameraUsageDescription键

Pav*_*lev 26 ios cordova hybrid-mobile-app

最近更改后,如果您的应用尝试访问隐私敏感数据,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>
Run Code Online (Sandbox Code Playgroud)

然后

cordova build ios --release --device
Run Code Online (Sandbox Code Playgroud)

产生ipa,显然在info.plist中没有正确的信息.感觉就像我错过了一些东西.

问题1: 我需要将什么内容放入config.xml来解决NSCameraUsageDescription问题? 问题2: 是否可以对此字符串使用本地化?

谢谢!

jce*_*ile 32

新答案:

从Cordova CLI 6.5.0开始,您可以info.plist使用以下edit-config标签直接写入config.xml:

resource-file 但请确保您使用的是最新版本的插件,否则插件变量可能会覆盖这些值.

对于本地化,您可以使用info.plist此插件中的标记和InfoPlist.strings文件(但您不需要插件,config.xml支持resource-file标记)

https://github.com/MBuchalik/cordova-plugin-ios-permissions

老答案:

您可以在不写config.xmlconfig-file使用NSCameraUsageDescription标签,但(它被上工作)

最新版本的相机插件允许您cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="your usage message"在安装插件时添加

info.plist

现在,无法本地化此字符串


Pav*_*lev 7

以下是我自己研究的结果:

    • 是的,您可以 使用config-file标签config.xml文件修改info.plist,您必须使用插件 (cordova自定义配置)并按照说明进行虔诚的操作.
    • 但是,可能更好的选择是使用plugin.xml来做同样的事情.有关它的更多信息,请参阅此处(从plugin.xml修改信息plist)
    • @jcesarmobile提到的另一个选项 - 当前的相机插件可能像cordova插件相机一样支持它(这个解决方案特定于插件)

如果我错了,请纠正我.有关直接来自config.xml的本地化的更多信息表示赞赏.

就个人而言,我不喜欢使用自定义插件来修改info.plist文件.感觉就像我使用的每个新插件让我的应用程序越来越脆弱.:)


chi*_*aos 5

首先,在苹果拒绝我的 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" />
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)