Ionic和iOS 10版本中的使用说明问题

use*_*734 14 ios cordova ionic-framework ios10

我的iOS离子应用程序运行良好,直到今天我想要进行新的构建.

这就是Apple返回的内容:

亲爱的开发者,

我们发现您最近交付的"AppName"存在一个或多个问题.要处理您的交付,必须纠正以下问题:

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSPhotoLibraryUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSCameraUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

虽然您不需要修复以下问题,但我们想让您了解它们:

缺少推送通知权利 - 您的应用程序包含Apple推送通知服务的API,但应用程序签名中缺少aps-environment权利.要解决此问题,请确保在Provisioning Portal中为推送通知启用了App ID.然后,使用包含aps-environment权利的分发配置文件为您的应用签名.这将创建正确的签名,您可以重新提交您的应用程序.有关详细信息,请参阅"本地和推送通知编程指南"中的"供应和开发".如果您的应用不使用Apple推送通知服务,则无需执行任何操作.您可以从将来的提交中删除API以停止此警告.如果您使用第三方框架,则可能需要与开发人员联系以获取有关删除API的信息.

这是我的依赖:

  • "ngstorage": "~0.3.10",
  • "ion-image-lazy-load": "*",
  • "ngCordova": "~0.1.24-alpha",

我在ngCordova中使用条形码扫描仪.所以我这样做了: $ cordova plugin rm phonegap-plugin-barcodescanner $ cordova plugin add phonegap-plugin-barcodescanner --variable CAMERA_USAGE_DESCRIPTION="Scan QR-Codes" --save

现在config.xml有这个在底部:

 <plugin name="cordova-plugin-camera" spec="~1.2.0">
        <variable name="CAMERA_USAGE_DESCRIPTION" value="description" />
        <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="description" />
    </plugin>
    <plugin name="phonegap-plugin-barcodescanner" spec="https://github.com/phonegap/phonegap-plugin-barcodescanner.git">
        <variable name="CAMERA_USAGE_DESCRIPTION" value="Scan QR-Codes" />
    </plugin>
Run Code Online (Sandbox Code Playgroud)

但我仍然收到来自Apple的同样的电子邮件,我的应用程序有一个或多个问题..

Sha*_*wal 26

虽然,几乎所有Cordova插件现在都已更新,以支持用户敏感的使用说明.例如,将条形码插件版本更新为最新版本(截至2016年11月7日),其中添加了对使用说明的支持:

<plugin name="phonegap-plugin-barcodescanner" spec="~6.0.3">
Run Code Online (Sandbox Code Playgroud)

但是,如果你还没有找到支持它的插件,你需要设置描述,*-Info.plist那么你需要停止那里

*-Info.plist建议不要修改for Cordova应用程序,因为这将要求您保存在构建过程后可能会被覆盖的更改.因此,作为干净的替代方案,您应该使用cordova-custom-config.

cordova plugin add cordova-custom-config --save
Run Code Online (Sandbox Code Playgroud)

我为什么要用它?

虽然可以通过config.xml中的Cordova/Phonegap设置一些平台首选项,但许多(特别是与较新平台版本相关的那些)不能.一种解决方案是手动编辑platforms /目录中的配置文件,但是这不能在多个开发机器或CI环境中维护,后续构建操作可能会覆盖您的更改.

此插件尝试通过允许在准备操作完成后设置其他特定于平台的首选项来解决此差距,从而允许覆盖Cordova设置的首选项或设置其他未指定的首选项.由于自定义首选项已输入config.xml,因此可以将它们提交到版本控制,因此可以应用于多个开发计算机,CI环境,并在构建之间进行维护,甚至可以删除并重新添加平台.

现在将以下内容添加到块config.xml下的文件中<platform name="ios">:

<custom-config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist">
    <string>This app needs access to your Photo Library to include a screenshot with feedback foo.</string>
</custom-config-file>
<custom-config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist">
    <string>Allow to scan member's pass</string>
</custom-config-file>
Run Code Online (Sandbox Code Playgroud)

这将自动添加您的*-Info.plist.

更新1(2018年2月23日)

如果您使用cordova-custom-config插件版本<5,则替换custom-config-file标签config-file.

https://github.com/dpa99c/cordova-custom-config#changes-in-cordova-custom-config5

更新2(2019年1月19日)

请参阅Cordova CLI> = 6的答案:

/sf/answers/2660976041/

  • 我一直想知道为什么Xcode总是在cordova构建之后删除我的用法描述.这个答案对我很有帮助,谢谢@Shashank Agrawal. (2认同)

use*_*734 0

找到解决方案:$ cordova plugin list并重新安装所有插件并阅读他们的文档,了解如何安装它们NSPhotoLibraryUsageDescription等。