2
votes

Comment gérer l'avertissement AppStore - Chaîne d'objet manquante, en raison d'une bibliothèque tierce?

J'ai téléchargé une nouvelle version de l'application qui était dans l'App Store pendant plusieurs années.

Reçu le courriel suivant d'iTunes Connect:

Votre diffusion a réussi, mais vous souhaiterez peut-être corriger les problèmes suivants lors de votre prochaine diffusion: ITMS-90683: Chaîne d'objet manquante dans Info.plist -

NSLocationAlwaysUsageDescription NSLocationWhenInUseUsageDescription

L'application n'utilise la localisation à aucune fin.

Cela peut être causé:

  • l'un des pods que j'ai mis à jour a ajouté l'utilisation de l'emplacement (admob?)
  • Apple a commencé à effectuer cette vérification très récemment

J'ai recherché des éléments Location et CoreLocation dans le projet, mais aucun résultat. Il peut être compilé en binaire en l'utilisant. Mais comment savoir lequel et dans quel but?

Qu'est-ce que le développeur est censé écrire dans la chaîne d'objet si une bibliothèque tierce utilise cette autorisation?

PD: D'après ce que je sais pour AdMob, du moins sur Android, il utilise la localisation depuis longtemps. https://developers.google.com/admob/ios/targeting#location https://support.google.com/admob/answer/6373176?hl= en

PD2: Je viens de trouver ceci

7.8.1 2016-05-11 Ajout de la prise en charge du SDK pour l'utilisation automatique des données de localisation lorsqu'un utilisateur a explicitement activé les autorisations de localisation d'une application.

Dans les notes de version: https://developers.google.com/admob/ios / rel-notes

PD3: Je viens de trouver le problème sur le forum Google Groupes d'AdMob: https://groups.google. com / forum / #! category-topic / google-admob-ads-sdk / ios / byShbNTrumk


0 commentaires

3 Réponses :


2
votes

Mais comment savoir lequel et dans quel but?

Vous pouvez utiliser nm pour regarder les symboles des bibliothèques / frameworks avec lesquels vous liez. Essayez

find . -type file | xargs file | grep "Mach-O.*ar archive" | 
  awk '{print $1}' | tr -d : | xargs nm | grep CoreLocation

Pour trouver toutes les archives binaires dans votre dossier Pods, exécutez

nm <frameworkname> | grep CoreLocation

Une fois que vous avez trouvé la bibliothèque incriminée, vous peut essayer de comprendre à quoi servent les données de localisation, puis décider si vous pouvez vous en débarrasser ou continuer à les utiliser et ajouter les chaînes d'autorisation requises, comme l'explique @Rob.


5 commentaires

Merci. J'obtiens /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeD‌ default.xctoolchain / u‌ usr / bin / nm: nanopb: aucun fichier ou répertoire de ce type.


Alors ne lancez pas nm nanopb :) Sérieusement, vous devrez trouver les noms de fichiers individuels pour chaque bibliothèque que vous incluez, par exemple en exécutant find. -type fichier | fichier xargs | grep "ar archive" dans votre répertoire Pods


Ouais, je l'ai compris maintenant. Cela fonctionne si je passe .dylib en entrée. Merci. Vérifierai


impossible de trouver une ligne unique pour nm + grep + find. Pourriez-vous rejoindre tout en un s'il vous plaît?


Merci! Bien que le résultat soit "rien en utilisant CoreLocation"



2
votes

Qu'est-ce que le développeur est censé écrire dans la chaîne d'objet si une bibliothèque tierce utilise cette autorisation? »

Je suggère quelque chose qui capture précisément ce que cette bibliothèque tierce fait avec les données de localisation, par exemple "Utilisé pour présenter des offres et des publicités propres à votre emplacement actuel" ou "Pour que nos chefs d'entreprise puissent suivre chacun de vos mouvements" (je plaisante ... en quelque sorte).

Si vous ne demandez jamais réellement de services de localisation, cela ne sera probablement jamais présenté à l'utilisateur (vraisemblablement, AdMob ne demande pas réellement de services de localisation, mais s'en sert uniquement lorsqu'ils sont disponibles), donc, du point de vue de l'utilisateur final, peu importe le texte que vous utilisez ici.

Mais j'encouragerais tout de même une chaîne ici qui capture toutes les façons dont les données de localisation seront utilisées. Si vous ajoutez plus tard vos propres fonctionnalités de services de localisation (déclenchant la présentation de cette divulgation), cela vous rappellera (ou à un futur développeur) de divulguer non seulement l'utilisation prévue par l'application des données de localisation, mais également de divulguer toutes les manières dont les données de localisation peuvent être utilisé. Nous voulons que nos clients puissent prendre des décisions éclairées en matière de confidentialité. Et en remplissant ces chaînes d'utilisation maintenant, cela minimise le risque d'oublier plus tard comment AdMob (ou autre) utilise les données.


0 commentaires

0
votes

Un autre endroit avec un problème connexe: https://github.com/OneSignal/OneSignal-iOS-SDK/issues/ 368

J'ai essayé de supprimer le pod OneSignal et de télécharger une nouvelle version. Cette fois, tout a fonctionné sans aucun e-mail d'Apple.


0 commentaires