【问题标题】:Usage description issue in Ionic and iOS 10 buildsIonic 和 iOS 10 版本中的使用说明问题
【发布时间】:2017-02-20 04:46:18
【问题描述】:

我的 iOS 离子应用程序运行良好,直到今天我想创建一个新版本。

这是 Apple 返回的内容:

尊敬的开发者,

我们发现您最近交付的一个或多个问题 “应用程序名称”。要处理您的交付,请执行以下操作 问题必须得到纠正:

此应用尝试在不使用的情况下访问隐私敏感数据 描述。应用的 Info.plist 必须包含 NSPhotoLibraryUsageDescription 键,带有解释为的字符串值 用户应用如何使用这些数据。

此应用尝试在不使用的情况下访问隐私敏感数据 描述。应用的 Info.plist 必须包含 NSCameraUsageDescription 键,带有一个解释给 用户应用如何使用这些数据。

虽然您不需要解决以下问题,但我们希望 让您了解它们:

缺少推送通知权利 - 您的应用包含一个 API,用于 Apple 的推送通知服务,但 aps-environment 权利 应用程序的签名中缺少。要解决此问题,请确保您的 在供应门户中为推送通知启用了 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 的同一封电子邮件,表明我的应用存在一个或多个问题。

【问题讨论】:

    标签: ios cordova ionic-framework ios10


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您必须将键 NSPhotoLibraryUsageDescription 添加到 Info.plist(在 Xcode 中),并且该值必须是用户允许使用相机的原因(出现在请求相机确认对话框中)

      【讨论】:

        【解决方案3】:

        您必须将NSPhotoLibraryUsageDescriptionNSCameraUsageDescription 添加到您的xcode 中的*.plist

        NSPhotoLibraryUsageDescription = 隐私 - 照片库使用说明 NSCameraUsageDescription = 隐私 - 相机使用说明

        然后在值中添加对这些隐私设置的描述。

        希望对你有帮助

        【讨论】:

          【解决方案4】:

          尽管,现在几乎所有 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 环境,并在构建之间进行维护 或者即使一个平台被删除并重新添加。

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

          <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

          更新 1(2018 年 2 月 23 日)

          如果您使用的是cordova-custom-config 插件版本custom-config-file 标记替换为config-file

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

          更新 2(2019 年 1 月 19 日)

          查看 Cordova CLI >= 6 的答案:

          https://stackoverflow.com/a/38013943/2405040

          【讨论】:

          • 我一直想知道为什么 Xcode 总是在 Cordova 构建后删除我的使用说明。这个答案对我帮助很大,谢谢@Shashank Agrawal。
          【解决方案5】:

          在您的 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

          【讨论】:

          • 这仅在您使用 Adob​​e 的在线 PhoneGap Build 服务时有效。如果您使用 CLI 在本地构建,那么您是对的,它根本不起作用。
          【解决方案6】:

          我正在使用 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>
          

          【讨论】:

            猜你喜欢
            • 2017-02-16
            • 2016-12-21
            • 2018-04-16
            • 2017-01-17
            • 1970-01-01
            • 2017-03-15
            • 2019-10-08
            • 2015-12-17
            • 2019-02-21
            相关资源
            最近更新 更多