我的iOS离子应用程序运行良好,直到今天我想要进行新的构建。
这是Apple返回的内容:
亲爱的开发人员,
我们发现您最近交付的一个或多个问题 “APPNAME”。要处理您的交货,请执行以下操作 问题必须纠正:
此应用尝试在不使用的情况下访问隐私敏感数据 描述。应用程序的Info.plist必须包含 NSPhotoLibraryUsageDescription键,其字符串值解释为 用户应用程序如何使用此数据。
此应用尝试在不使用的情况下访问隐私敏感数据 描述。应用程序的Info.plist必须包含 NSCameraUsageDescription键,用字符串值解释 用户应用程序如何使用此数据。
虽然您不需要修复以下问题,但我们希望如此 让你意识到它们:
缺少推送通知权利 - 您的应用包含适用于的API Apple的推送通知服务,但是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>
但我仍然收到来自Apple的同样的电子邮件,我的应用程序有一个或多个问题..
答案 0 :(得分:26)
尽管现在几乎所有Cordova插件都已更新,以支持用户敏感的使用说明。例如,将条形码插件版本更新为最新版本(从 2016年11月7日更新),其中添加了对使用说明的支持:
<plugin name="phonegap-plugin-barcodescanner" spec="~6.0.3">
但如果您还没有找到支持它的插件,并且您需要在*-Info.plist
中设置说明,请您需要停止
不建议修改Cordova应用程序的*-Info.plist
,因为这将要求您保存在构建过程后可能会被覆盖的更改。因此,作为干净的替代方案,您应该使用cordova-custom-config。
cordova plugin add cordova-custom-config --save
我为什么要使用它?
虽然可以通过Cordova / Phonegap设置一些平台首选项 config.xml,很多(特别是与较新的平台版本相关的) 不能。一种解决方案是手动编辑配置文件 平台/目录,但这是不可维护的 多个开发机器或后续的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>
这会自动添加*-Info.plist
。
如果您使用的是cordova-custom-config
插件版本&lt; 5然后将custom-config-file
标记替换为config-file
。
https://github.com/dpa99c/cordova-custom-config#changes-in-cordova-custom-config5
请参阅 Cordova CLI&gt; = 6 :
的答案答案 1 :(得分:1)
您必须将NSCameraUsageDescription
和*.plist
添加到xcode中的{{1}};
NSPhotoLibraryUsageDescription =隐私 - 照片库使用说明 NSCameraUsageDescription =隐私 - 相机使用说明
然后在该值中添加对这些隐私设置的描述。
希望有所帮助
答案 2 :(得分:1)
我正在使用phonegap插件org.apache.cordova.camera和100%有效的解决方案:
您所要做的就是将值放在config.xml文件中并使用phonegap进行构建。
我的config.xml:
<plugin name="org.apache.cordova.camera">
<variable name="CAMERA_USAGE_DESCRIPTION" value="App would like to access the camera." />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="App would like to access the library." />
</plugin>
答案 3 :(得分:0)
找到解决方案:$ cordova plugin list
并重新安装所有插件并阅读有关如何安装NSPhotoLibraryUsageDescription
等文档的文档。
答案 4 :(得分:0)
您必须将密钥NSPhotoLibraryUsageDescription
添加到Info.plist
(在Xcode中),并且该值必须是用户允许摄像头使用的原因(显示在请求摄像头确认对话框中)
答案 5 :(得分:-1)
在config.xml文件中添加以下内容,它可以正常工作。
<gap:plugin name="cordova-plugin-media-capture" source="npm">
<param name="CAMERA_USAGE_DESCRIPTION" value="We'd like to access your camera to let you take a photo"/>
<param name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="We'd like to access your photo library to let you pick a photo"/>
<param name="MICROPHONE_USAGE_DESCRIPTION" value="We'd like to access your microphone to let you record an audio"/>
</gap:plugin>
以下是PhoneGap Build的完整config.xml文件。 https://github.com/moodlehq/moodlemobile-phonegapbuild/blob/master/config.xml