【问题标题】:App rejected: Missing Info.plist key "NSBluetoothPeripheralUsageDescription" but framework is not present应用被拒绝:缺少 Info.plist 键“NSBluetoothPeripheralUsageDescription”但框架不存在
【发布时间】:2017-10-15 16:22:43
【问题描述】:

我有一个在 iOS 手机上运行的 Cordova 应用程序。我正在尝试将此应用程序的更新发送到 App Store,但被拒绝。首先,它被拒绝了,因为info.plist 包含带有密钥NSBluetoothPeripheralUsageDescription 的行,并且此功能从未在我的应用程序中使用。为了解决这个问题,我从info.plist 中删除了这一行,并从xCode 中的Linked Frameworks and Libraries 中删除了相应的框架(框架CoreBluetooth.frameworkNSBluetoothPeripheralUsageDescription 行是由Cordova Diagnostic Plugin 添加的),如图所示以下:

但是现在我收到一封来自 iTunes Connect 的电子邮件,内容如下:

缺少 Info.plist 密钥 - 此应用尝试访问隐私敏感信息 没有使用说明的数据。应用的 Info.plist 必须包含 带有字符串值的 NSBluetoothPeripheralUsageDescription 键 向用户解释应用如何使用这些数据。

但我从 xCode 项目中删除了 CoreBluetooth.framework...

我的问题是:我需要从另一个地方删除这个框架吗?是否有其他框架能够使用蓝牙导致此问题?

感谢您的帮助。

【问题讨论】:

  • 是的,框架可能存在,但NSBluetoothPeripheralUsageDescription 不存在。
  • 只需添加描述,你应该很好。
  • 可能任何其他第三方框架正在使用它。如果您使用的是 cocoapods,您可以检查您的 pod 的 pod 规格,看看是否需要核心蓝牙。
  • @Bilal 不,我没有使用 Cocoa Pods。这是一个科尔多瓦项目。您知道是否有一种简单的方法可以发现第三方框架是否正在使用蓝牙?或者,如果某些 Cordova 插件正在添加一些可能需要蓝牙的框架?谢谢。
  • 我不知道有什么其他方法.....这是一个使用蓝牙的 Cordova 插件Cordova Bluetooth LE 插件,请确保您没有使用它。跨度>

标签: ios xcode cordova


【解决方案1】:

对于您或您链接以阻止尝试访问的任何框架的任何内容,描述都是强制性的。如果未提供使用说明,则在尝试访问内容时会生成错误,因此如果您收到这些错误,您的应用程序必须请求它们。您应该了解为什么您的应用或其框架需要这些,并在您的应用的 info.plist 中添加适当的使用说明。

或者更理想的是,如果您不需要访问权限,请查看是否有办法不请求它(或使用不必要的框架)。

暂时您可以在 info.plist 中添加以下描述并提交您的应用(以防应用紧急更新)

<key>NSCalendarsUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>Explain the reasons for accessing...</string>

只需打开您的 info.plist 并相应地添加上面的代码。

【讨论】:

    【解决方案2】:

    打开 Info Plist 文件并按 + 号在项目的 info.plist 中添加新密钥并添加此 NSBluetoothPeripheralUsageDescription 并写入值“解释蓝牙的原因”

    查看下方的屏幕截图

    【讨论】:

    • 感谢您的回答,但我需要删除 CoreBluetooth.framework 或任何其他可以请求使用蓝牙的框架,因为我的应用不使用它。
    • 您是否从源代码中删除了蓝牙代码?
    • 不,我刚刚从 Linked Frameworks and Libraries 中删除了 CoreBluetooth.framework,并从 info.plist 中删除了相应的行。
    【解决方案3】:

    尝试在您的 plist 中添加以下内容。它解决了我的问题。

    <config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist">
            <string>YourAppName would like to store a photo.</string>
        </config-file>
    

    【讨论】:

      【解决方案4】:

      您似乎不能使用通用文本字符串,例如:

      我们需要访问您的蓝牙连接。

      我有这样的事情被拒绝了。当我有更详细的描述时:

      我们需要访问您的蓝牙连接才能从您的 用于崩溃报告的设备。

      我被批准了。

      【讨论】:

        猜你喜欢
        • 2017-12-30
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-30
        • 2019-09-23
        相关资源
        最近更新 更多