Файл Info.plist приложения должен содержать ключ NSBluetoothAlwaysUsageDescription, пока ключ находится в файле plist.

Прежде всего, я хотел бы заявить, что я уже посмотрел на сообщение Qaru здесь и добавив либо упомянутое либо iCoder & Дипак не решил проблему для меня.

Я использую React-Native для разработки своих приложений, в том числе этого пакета React-Native-Permissions, который я нашел. В их документации говорится, что я должен добавить все разрешения, которые дает их пакет, например, Местоположение, Камера и все остальные, упомянутые там. После этого я смог загрузить свое приложение в магазин и отправить его на рассмотрение.

Сегодня я добрался до офиса и увидел, что есть отзывы от Apple. Поэтому после того, как я закончил обратную связь, я хотел снова загрузить его в магазин (увеличивая номер сборки, как я должен был сделать).

И теперь я продолжаю получать сообщение в названном выше названии, пока оно присутствует в моем info.plist, например,

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app does not request this permission or utilize this functionality but it is included in our info.plist since our app utilizes the react-native-permissions library, which references this permission in its code.</string>

ОБНОВЛЕНИЕ:

Я надеюсь прояснить ситуацию ниже, чтобы найти ответ на проблему, с которой я сталкиваюсь. Ошибка, указанная в заголовке, возникает сразу после загрузки в магазин (так что я предполагаю, что фактическая ошибка обнаружена автоматическими проверками, выполненными системой).

Приведенный ниже ответ не поможет мне решить проблему, поскольку автоматическая проверка системы не проверяет более описательную строку. И я успешно использовал эту строку для других элементов в info.plist. Рядом с этим я обнаружил доказательства того, что люди успешно отправляют свои приложения в магазин приложений, используя эту тактику. Как показано в комментарии Gradner по этой ссылке Реагировать на проблему с собственным разрешением 266

Ответы

Ответ 1

Кто-то опубликовал ответ, который мне помог, но потом удалил! Перефразируя ответ:

Добавление ключей конфиденциальности в список, не зная, что вызывает ошибку от Apple, не лучший способ решить эту проблему.

В моем случае, когда я выполнил поиск grep, я обнаружил, что в моем project.pbxproj есть какая-то ссылка на CoreBluetooth.framework. Я удалил ссылку, и сборка и загрузка TestFlight успешно завершены!

Для поиска используйте следующую команду:

grep -r -a CoreBluetooth.framework ProjectFolder

Ответ 2

Если вы не используете Bluetooth,

просто добавьте это в ваш файл Info.plist:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app does not request this permission or utilize this functionality but it is included in our info.plist since our app utilizes the react-native-permissions library, which references this permission in its code.</string>

Apple отказалась от свойства NSBluetoothPeripheralUsageDescription в пользу NSBluetoothAlwaysUsageDescription.

Подробности смотрите здесь: ссылка на документы Apple

Если вы используете Bluetooth,

просто добавьте это в ваш файл Info.plist:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app uses bluetooth to find, connect and transfer data between different devices</string>

Ответ 3

Я не могу понять, почему в первый раз это не сработало, но когда я вошел сегодня в офис, я увидел комментарий, опубликованный Sumeet.Jain, который предложил мне заменить

Ключ NSBluetoothPeripheralUsageDescription с ключом NSBluetoothAlwaysUsageDescription

Это на самом деле приведет к ошибке, которая скажет об отсутствии NSBluetoothPeripheralUsageDescription, как мы могли бы ожидать. Затем я повторно добавил NSBluetoothPeripheralUsageDescription в свой info.plist, и теперь я наконец смог загрузить свое приложение в магазин. Спасибо всем, кто мне помог.

постскриптум Единственное, о чем я могу думать по-другому, по сравнению со вчерашним днем, - это то, что теперь я добавил ключ, используя Xcode, а не просто редактировал файл info.plist в своем редакторе, который я использую для response-native. Надеюсь, это поможет другим, как это помогло мне

Ответ 4

Я получил основную причину

У нас есть два варианта по умолчанию в plist для ввода использования Bluetooth.

1.Privacy - Описание использования Bluetooth периферийных устройств 2.Privacy - Bluetooth всегда используется описание

Но XCode сохраняет эту опцию в исходном коде, как показано ниже

1.NSBluetoothPeripheralUsageDescription вместо конфиденциальности - Описание использования периферийных устройств Bluetooth

2.Privacy - Описание использования Bluetooth всегда вместо конфиденциальности - Описание использования Bluetooth всегда

Так что теперь дело в том, NSBluetoothPeripheralUsageDescription устарело, и ожидается ключ "NSBluetoothAlwaysUsageDescription"

Вот решение, откройте файл plist как исходный код в Xcode и скопируйте и вставьте приведенную ниже пару ключ-значение

Ключ: NSBluetoothAlwaysUsageDescription Значение: это приложение требует блютуз, чтобы бла бла бла.

Ответ 5

Ссылка на обновление для iOS 13

Для приложений с целью развертывания iOS 13 и более поздних версий используйте вместо этого NSBluetoothAlwaysUsageDescription.

Для целей развертывания более ранних, чем iOS 13, добавьте NSBluetoothAlwaysUsageDescription и NSBluetoothPeripheralUsageDescription в файл списка свойств информации приложений.

Устройства, работающие под управлением более ранних версий iOS, используют NSBluetoothPeripheralUsageDescription, в то время как устройства, работающие под управлением более поздних версий, используют NSBluetoothAlwaysUsageDescription.