Как отключить возможность Bluetooth с Cordova для iOS, чтобы избежать ошибки пропуска NSBluetoothAlwaysUsageDescription - PullRequest
0 голосов
/ 13 октября 2019

Я разрабатываю приложение для iOS / Android с помощью Cordova, и приложение не имеет никакой функции для использования Bluetooth. Возможно, после запуска iOS 13 у меня возникли проблемы с публикацией новой версии моего приложения в AppStoreConnect. Я получил от Apple электронное сообщение с предупреждением о том, что в info-plist отсутствует ключ NSBluetoothAlwaysUsageDescription.

Как уже упоминалось выше, мне не нужна функция Bluetooth для моего приложения, но некоторые из плагинов используют еевероятно, без моего намерения.

Если у кого-то есть такая же проблема, пожалуйста, дайте мне знать решение.

Вот мое окружение.

Cordova

  • Cordova 7.1.0

Плагины

  • cordova-admob-sdk 0.22.0 "AdMob SDK"
  • cordova-plugin-admob-free0.25.0 "Cordova AdMob Plugin"
  • cordova-plugin-badge 0.8.7 "Значок"
  • cordova-plugin-inappbrowser 3.0.0 "InAppBrowser"
  • cordova-plugin-splashscreen 5.0.2 "Splashscreen"
  • cordova-plugin-statusbar 2.4.2 "StatusBar"
  • cordova-plugin-swift-support 3.1.1 "SwiftSupport"
  • cordova-plugin-whitelist 1.3.3 "Белый список"
  • cordova-plugin-wkwebview-engine 1.1.4 "Cordova WKWebПросмотр двигателя "
  • cordova-plugin-x-toast 2.6.2" Тост "
  • cordova-обещание-polyfill 0.0.2" Кордова-обещание-polyfill "
  • cordova-sqlite-storage 2.3.1 «Плагин Cordova sqlite для хранения»
  • phonegap-plugin-barcodescanner 8.0.0 «BarcodeScanner»
  • phonegap-plugin-push 2.1.3 «PushPlugin»

Я бы хотел отключить функцию Bluetooth и сделать так, чтобы мое приложение передавалось в AppleStoreConnect.

Ответы [ 3 ]

0 голосов
/ 13 октября 2019

Подтверждаю, что проблема возникла из AdMob SDK (cordova-admob-sdk), зависимости cordova-plugin-admob-free.

Знаете ли вы, в чем причина использования (фреймворк CoreBlueTooth вAdMob SDK) пожалуйста? Или есть какое-то решение не использовать этот фреймворк?

0 голосов
/ 28 октября 2019

Проблема в том, что плагин cordova-admob-sdk зависит от CoreBluetooth.framework фреймворка. Было бы неплохо, если бы мы могли настроить плагин так, чтобы он не зависел от bluetooth. Поэтому, пока плагин не исправит эту часть, мы можем решить эту проблему двумя различными способами.

Решение 1:

Одним из решений является добавление утверждения о том, что ваше приложение используетBluetooth. Он может быть настроен в вашем config.xml.

<platform name="ios">
    ...
    <config-file parent="NSBluetoothAlwaysUsageDescription" platform="ios" target="*-Info.plist">
       <string>
           This app requires access to your bluetooth. blah blah blah
       </string>
    </config-file>
    ...
</platform>

Решение 2:

Вторым решением является удаление зависимости от CoreBluetooth.framework самостоятельно. Вы можете сделать это из Xcode. Вам просто нужно удалить запись для CoreBluetooth.framework в разделе General -> Frameworks, Libraries, and Embedded Content.

enter image description here

0 голосов
/ 13 октября 2019

Это официальное заявление, которое вы получите от группы проверки, если эта строка отсутствует:

ITMS-90683: отсутствует строка назначения в Info.plist - код вашего приложения ссылается на один или несколькоAPI, которые получают доступ к конфиденциальным данным пользователя. Файл Info.plist приложения должен содержать ключ NSBluetoothAlwaysUsageDescription с целевой строкой, ориентированной на пользователя, которая четко и полностью объясняет, зачем вашему приложению нужны данные. Начиная с весны 2019 года, все приложения, представленные в App Store и имеющие доступ к пользовательским данным, должны содержать целевую строку. Если вы используете внешние библиотеки или SDK, они могут ссылаться на API, которые требуют строку назначения. Хотя ваше приложение может не использовать эти API, строка назначения по-прежнему требуется . Вы можете связаться с разработчиком библиотеки или SDK и попросить, чтобы они выпустили версию своего кода, которая не содержит API.

Как упоминалось в этом утверждении, весьма вероятно, что один из плагиновВы используете ссылки API Bluetooth. И даже если вы не используете этот API в своем приложении, вам все равно нужно предоставить строку назначения.

Так что самое простое и быстрое решение (и как я это сделал сам): просто предоставьте строку, и обзор пройдет. Вы можете легко добавить эту строку в *-Info.plist, используя плагин cordova-custom-config.

...