web-dev-qa-db-ja.com

キーがplistファイルにある間、アプリのInfo.plistファイルにはNSBluetoothAlwaysUsageDescriptionキーが含まれている必要があります

最初に、私はすでに Stack Overflow post here を見て、iCoderとDeepakのいずれかで言及されているものを追加しても問題が解決しなかったことを述べたいと思います。

React-Nativeを使用して、これを含むアプリを開発しています React-Native-Permissions パッケージを見つけました。彼らのドキュメントは、私が彼らのパッケージが可能にするすべての許可を追加するべきだと述べています。場所、カメラ、その他すべてのものがここに記載されています。これを行った後、アプリケーションをストアにアップロードし、レビューのために提出することができました。

今日オフィスに着いたとき、Appleからのフィードバックがいくつかありました。フィードバックを完了した後、もう一度ストアに再アップロードしたかったので、ビルド番号を増やしてmを行うことになっています)。

そして今、私はそのような私の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のコメントが示すように React Native Permission issue 266

23
MikeSli

誰かが私に役立つ答えを投稿しましたが、それを削除しました!答えを言い換えると:

Appleからのエラーの原因が何であるかを知らずにプライバシーキーをplistに追加することは、これを解決する最良の方法ではありません。

私の場合、grep検索を行ったところ、CoreBluetooth.framework内にproject.pbxprojへの参照があることがわかりました。参照を削除し、ビルドとTestFlightのアップロードが成功しました!

検索するには、次のコマンドを使用します。

grep -r -a CoreBluetooth.framework ProjectFolder
7
rmp251

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は、NSBluetoothAlwaysUsageDescriptionを優先して、NSBluetoothPeripheralUsageDescriptionプロパティを非推奨にしました。

詳細はこちら: link to Apple docs

Bluetoothを使用している場合、

これをInfo.plistファイルに追加するだけです。

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

私は根本的な原因を得ました

Bluetoothの使用法を入力するために、plistには以下の2つのデフォルトオプションがあります。

1.プライバシー-Bluetooth周辺機器の使用法の説明2.プライバシー-Bluetooth常時使用法の説明

しかしXcodeはこのオプションを以下のようなソースコードに保存します

1.プライバシーの代わりにNSBluetoothPeripheralUsageDescription-Bluetooth周辺機器の使用法の説明

2.プライバシー-プライバシーではなくBluetooth Always Usage Description-Bluetooth Always Usage Description

したがって、ここでポイントはNSBluetoothPeripheralUsageDescriptionが廃止され、キー "NSBluetoothAlwaysUsageDescription"が期待されることです。

これが解決策です。Xcodeでソースコードとしてplistファイルを開き、以下のキーと値のペアをコピーして貼り付けます

キー:NSBluetoothAlwaysUsageDescription値:このアプリケーションは、何とか何とかするためにBluetoothを必要とします。

5

なぜ最初は機能しなかったのかはわかりませんが、今日オフィスに入ると、Sumeetから投稿されたコメントを見ました。

NSBluetoothPeripheralUsageDescriptionキーとNSBluetoothAlwaysUsageDescriptionキー

これにより、実際には、予期したとおりにNSBluetoothPeripheralUsageDescriptionがないというエラーが発生します。それで、NSBluetoothPeripheralUsageDescriptionをinfo.plistに再度追加し、ようやくアプリをストアにアップロードできるようになりました。私を助けてくれたすべての人に感謝します。

pS昨日と比べて私が違うと思った唯一のことは、react-nativeに使用するエディターでinfo.plistファイルを編集するだけでなく、Xcodeを使用してキーを追加したことです。うまくいけば、これは私を助けて他の人を助けます

2
MikeSli