web-dev-qa-db-fra.com

Le fichier Info.plist de l'application doit contenir une clé NSBluetoothAlwaysUsageDescription pendant que la clé se trouve dans le fichier plist

Tout d'abord, je voudrais dire que j'ai déjà regardé Stack Overflow post here et l'ajout de celui mentionné par iCoder & Deepak n'a pas résolu le problème pour moi.

J'utilise React-Native pour développer mes applications, y compris ce package React-Native-Permissions que j'ai trouvé. Leur documentation indique que je devrais ajouter toutes les autorisations que leur package permet, par exemple Emplacement, appareil photo et tous les autres mentionnés ici. Après avoir fait cela, j'ai pu télécharger ma demande dans le magasin et la soumettre pour examen.

Aujourd'hui, je suis arrivé au bureau et j'ai vu qu'il y avait des commentaires de Apple disponible. Donc, après avoir terminé les commentaires, je voulais à nouveau télécharger vers le magasin (augmenter le nombre de build à mesure que je '' je suis censé faire).

Et maintenant, je continue à recevoir le message dans le titre mentionné ci-dessus pendant que je l'ai présent dans mon info.plist comme tel

<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>

ÉDITER:

J'espère clarifier les choses ci-dessous afin de trouver une réponse au problème auquel je suis confronté. L'erreur indiquée dans le titre se produit directement après le téléchargement sur le magasin (donc je suppose que l'erreur réelle est détectée par les vérifications automatiques effectuées par le système).

La réponse ci-dessous ne m'aidera pas à résoudre le problème car la chaîne plus descriptive ne sera pas vérifiée par la vérification automatique du système. Et j'ai utilisé avec succès cette chaîne pour d'autres éléments dans info.plist. À côté de cela, j'ai trouvé des preuves que les gens soumettaient avec succès leur application à l'App Store en utilisant cette tactique. Comme le montre le commentaire de Gradner suivant ce lien React Native Permission issue 266

23
MikeSli

Quelqu'un a posté une réponse qui m'a aidé, mais l'a ensuite supprimée! Pour paraphraser la réponse:

Ajouter les clés de confidentialité à la liste sans savoir ce qui déclenche l'erreur de Apple n'est pas le meilleur moyen de résoudre ce problème.

Dans mon cas, quand j'ai fait une recherche grep, j'ai trouvé qu'il y avait une référence à CoreBluetooth.framework dans mon project.pbxproj. J'ai supprimé la référence et le build et le téléchargement de TestFlight ont réussi!

Pour effectuer une recherche, utilisez la commande suivante:

grep -r -a CoreBluetooth.framework ProjectFolder
7
rmp251

Si vous n'utilisez pas Bluetooth,

ajoutez simplement ceci à votre fichier 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 a déconseillé la propriété NSBluetoothPeripheralUsageDescription au profit de NSBluetoothAlwaysUsageDescription.

Voir les détails ici: lien vers Apple docs

Si vous utilisez Bluetooth,

ajoutez simplement ceci à votre fichier Info.plist:

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

J'ai la cause profonde

Nous avons ci-dessous deux options par défaut dans plist pour saisir l'utilisation du Bluetooth.

1.Privacy - Description de l'utilisation du périphérique Bluetooth 2.Privacy - Bluetooth Always Description de l'utilisation

Mais Xcode enregistre cette option dans le code source comme ci-dessous

1.NSBluetoothPeripheralUsageDescription au lieu de Privacy - Bluetooth Peripheral Usage Description

2.Privacy - Bluetooth Always Usage Description au lieu de Privacy - Bluetooth Always Usage Description

Alors maintenant, le point est que NSBluetoothPeripheralUsageDescription est obsolète et il attend la clé "NSBluetoothAlwaysUsageDescription"

Voici la solution, ouvrez le fichier plist en tant que code source dans Xcode et copiez-collez la paire clé-valeur ci-dessous

Key: NSBluetoothAlwaysUsageDescription Valeur: Cette application nécessite le bluetooth pour bla bla bla.

5
VasanthRavichandran

Je ne peux pas comprendre pourquoi la première fois cela n'a pas fonctionné mais quand je suis entré dans le bureau aujourd'hui, j'ai vu le commentaire posté par Sumeet.Jain qui a suggéré que je devrais remplacer

Clé NSBluetoothPeripheralUsageDescription avec la clé NSBluetoothAlwaysUsageDescription

Cela entraînerait en fait une erreur qui indiquerait que NSBluetoothPeripheralUsageDescription est manquant, comme on pourrait s'y attendre. Alors j'ai à nouveau ajouté la NSBluetoothPeripheralUsageDescription à mon info.plist et maintenant j'ai enfin pu télécharger mon application sur la boutique. Merci pour tous ceux qui m'ont aidé.

p.s. La seule chose à laquelle je peux penser que j'ai fait différemment d'hier est que j'ai maintenant ajouté la clé en utilisant Xcode au lieu de simplement éditer le fichier info.plist dans mon éditeur que j'utilise pour React-Native. J'espère que cela aide les autres car cela m'a aidé

2
MikeSli