Файл 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.