ios - NSBluetoothAlwaysUsageDescription是必需的,但未使用藍牙




xcode permissions (5)

在部署新Xcode 11 GM Seed 2的ios應用中,蘋果返回了錯誤: ITMS-90683:Info.plist中缺少NSBluetoothAlwaysUsageDescription的目的字符串

https://developer.apple.com/documentation/bundleresources/information_property_list/nsbluetoothalwaysusagedescription?language=objc 讀取。

問題是我沒有在應用程序中使用藍牙。 也許我不知道。 我如何找出為什麼需要此許可目的?

我沒有使用 CoreBluetooth.framework


如果您的應用的部署目標早於iOS 13,則除了NSBluetoothAlwaysUsageDescription鍵外,還應將NSBluetoothPeripheralUsageDescription鍵添加到應用的信息屬性列表文件中,因為項目中的一個或多個第三方使用了藍牙功能。


您應用中的第三方庫/框架/吊艙可能正在使用CoreBluetooth。 只要在您的Info.plist中添加 NSBluetoothAlwaysUsageDescription ,錯誤就會消失。


我嘗試了Maurice的答案(帶有和不帶有 .framework 擴展名),但是在我的項目中沒有找到對 CoreBluetooth 任何引用。 我以前也曾在 Info.plist 文件中添加過:“ Privacy - Bluetooth Peripheral Usage Description ”,字符串值:“ App would like to use your bluetooth for communication purposes" ”。這也沒有用。
最後,在看到Chase Roberts的回答後,我添加了:“ NSBluetoothAlwaysUsageDescription ”,其字符串值為:“ App would like to use your bluetooth for communication purposes ”。 此後,發佈時不再針對我的應用顯示此錯誤。

注意: 在錯誤警告中: ITMS-90683 ,因為我的應用程序已成功交付,但是如果我希望對指定的問題進行更改,我可以這樣做。


打開您的Info.plist並添加一個 NSBluetoothAlwaysUsageDescription 。 您可以在編輯器中通過添加以下訂單項來做到這一點:

或者,您可以右鍵單擊Info.plist和Open As-> Source Code並將其粘貼為xml的兩行:

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    ....
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>We use Bluetooth to connect to the MantisX hardware device.</string>
    ....
</dict>
</plist>

顯然,蘋果公司已經做出了一些政策上的改變。 否則,請求未使用的標誌很奇怪。 這是非常令人擔憂的。 由於這些原因,我的應用程序也被拒絕了,儘管所有舊版本的應用程序都沒有這樣做。





xcode11