Onesignal-ios-sdk: Rejets AppStore pour NSLocationWhenInUseUsageDescription

Créé le 26 avr. 2018  ·  44Commentaires  ·  Source: OneSignal/OneSignal-iOS-SDK

La description:
Je ne peux pas télécharger mon application sur l'Appstore au fur et à mesure que je reçois

Clé Info.plist manquante - Cette application tente d'accéder aux données confidentielles sans description d'utilisation. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une valeur de chaîne expliquant à l'utilisateur comment l'application utilise ces données.

L'application fonctionnait auparavant et était approuvée, il s'agissait d'une mise à jour mineure

Mon application n'utilise pas la localisation !

Environnement
Dernier XCode 9.3

Étapes pour reproduire le problème :

  1. soumettre l'application en utilisant onesignal à l'appstore
  2. tu es immédiatement rejeté

Rien d'autre:

(crash stacktraces, ainsi que toute autre information ici)

Commentaire le plus utile

Salut,

Je viens de télécharger la nouvelle version de l'application sur l'App Store et j'ai reçu ci-dessous un e-mail d'Apple. Je n'utilise aucun type de service de localisation dans l'application, bien que les versions précédentes aient été parfaitement téléchargées.

--
Cher développeur,

Nous avons identifié un ou plusieurs problèmes avec une livraison récente pour votre application, "". Votre diffusion a réussi, mais vous souhaiterez peut-être corriger les problèmes suivants lors de votre prochaine diffusion : "Chaîne d'objectif manquante dans le fichier Info.plist. Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)."

"Chaîne d'objectif manquante dans le fichier Info.plist. Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationWhenInUseUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. n'utilisez pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple .com/documentation/uikit/core_app/protecting_the_user_s_privacy)."

Après avoir corrigé les problèmes, vous pouvez utiliser Xcode ou Application Loader pour télécharger un nouveau binaire sur iTunes Connect.

Meilleures salutations,

L'équipe de l'App Store

Tout de vous les gars sera d'une grande aide.

Merci

Tous les 44 commentaires

Merci d'avoir signalé cela. Notre équipe enquête.

C'est un problème qui arrive à beaucoup de gens sur les forums de développeurs, je ne sais pas si c'est lié à OneSignal : https://forums.developer.apple.com/thread/101367

@peterpaulis Pouvez-vous essayer quelque chose comme étape de débogage ? Pouvez-vous essayer de supprimer le SDK OneSignal de votre projet et voir si cela résout le problème ?

En fait, vous n'avez pas besoin de soumettre à l'examen de l'App Store, nous voulons juste voir si vous pouvez télécharger une version.

Nous essayons de reproduire ce problème de notre côté, nous avons quelques applications de test, mais nos applications ne sont pas refusées.

@peterpaulis Nous problème au cours des deux dernières heures, pouvez-vous essayer de télécharger une autre version ?

Je peux confirmer que cela vient de m'arriver aussi.

Je n'ai pas besoin de l'accès "Toujours" à la localisation, mais il semble que le NSLocationAlwaysUsageDescription soit désormais obligatoire lors de l'utilisation du SDK OneSignal, et l'invite de localisation demandera désormais l'option "Pendant l'utilisation" ou "Toujours" concernant accès à l'emplacement.
Je n'aime pas du tout ça, car demander une autorisation « intrusive » dont je n'ai même pas besoin ne me semble pas approprié.

Un moyen de configurer le SDK pour qu'il n'essaye pas de demander des autorisations de localisation « Toujours » ?

@habovh Cela semble arriver à beaucoup de gens, beaucoup d'entre eux n'utilisent pas le SDK OneSignal dans leur application, nous ne pensons donc pas que ce problème soit lié à OneSignal.

NSLocationAlwaysUsageDescription n'est _pas_ obligatoire avec le SDK OneSignal. Cela fonctionnera très bien si vous n'utilisez que NSLocationWhenInUsageDescription . Le problème semble avoir été un problème avec le système d'examen d'Apple, et il semble qu'ils déploient un correctif. Nous continuerons à enquêter sur le problème.

En attendant, pouvez-vous essayer de supprimer complètement le SDK OneSignal de votre projet et voir si Apple acceptera une nouvelle version ? Vous n'avez pas besoin de le soumettre pour examen, nous voulons simplement isoler le problème.

D'accord, je peux confirmer qu'Apple est au courant de ce problème et que leurs ingénieurs l'examinent.

Il semble qu'Apple ait résolu ce problème. Je fermerai le sujet bientôt. Si vous rencontrez toujours ce problème lors du téléchargement des fichiers binaires, veuillez répondre

Salut,

Je viens de télécharger la nouvelle version de l'application sur l'App Store et j'ai reçu ci-dessous un e-mail d'Apple. Je n'utilise aucun type de service de localisation dans l'application, bien que les versions précédentes aient été parfaitement téléchargées.

--
Cher développeur,

Nous avons identifié un ou plusieurs problèmes avec une livraison récente pour votre application, "". Votre diffusion a réussi, mais vous souhaiterez peut-être corriger les problèmes suivants lors de votre prochaine diffusion : "Chaîne d'objectif manquante dans le fichier Info.plist. Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)."

"Chaîne d'objectif manquante dans le fichier Info.plist. Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationWhenInUseUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. n'utilisez pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple .com/documentation/uikit/core_app/protecting_the_user_s_privacy)."

Après avoir corrigé les problèmes, vous pouvez utiliser Xcode ou Application Loader pour télécharger un nouveau binaire sur iTunes Connect.

Meilleures salutations,

L'équipe de l'App Store

Tout de vous les gars sera d'une grande aide.

Merci

Salut @OmarShoaib

Notre SDK n'accède pas directement à la localisation, il utilise la réflexion au moment de l'exécution pour voir si votre application a la localisation activée. Même alors, il n'accédera à l'emplacement que si vous appelez setLocationShared(false)

Pouvez-vous donner une liste des dépendances de votre application en plus de nos SDK ?

Merci pour la réponse rapide @Nightsd01

BTW, j'ai oublié de vous dire que j'utilise UnitySDK de OneSignal et les dépendances/plugins en plus de OneSignal que j'utilise sont répertoriés ci-dessous

Vuforia
SQLite3
Galerie Native
UnityOBBDownloader (utilise les services Play)

Ils fonctionnent tous très bien jusqu'à la dernière mise à jour.

Je viens juste de commencer à recevoir ce message aussi.

@OmarShoaib c'est intéressant, ce problème était extrêmement rare, Apple a peut-être changé les choses. Nous allons nous pencher sur cette question.

Cela m'arrive aussi maintenant.
Ma cible iOS est iOS 10 où cette chaîne était obligatoire pour les applications qui en avaient besoin lors de l'accès aux API de localisation.
Quand j'ai eu ma cible iOS en tant qu'iOS11, Apple ne m'a donné aucune erreur auparavant.

Salut, ça vient de m'arriver.
J'utilise ionic, ci-dessous les informations de version
`paquets cli : (/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.2
ionic (Ionic CLI) : 3.20.0

forfaits mondiaux :

cordova (Cordova CLI) : 8.0.0

forfaits locaux :

@ionic/app-scripts : 3.1.11
Cordova Platforms  : ios 4.5.5
Ionic Framework    : ionic-angular 3.9.2

Système:

Node  : v6.11.2
npm   : 3.10.10 
OS    : macOS High Sierra
Xcode : Xcode 9.4.1 Build version 9F2000

`
Dépendances du plugin
cordova-plugin-device 2.0.2 "Périphérique"
cordova-plugin-document-viewer 0.9.10 "SitewaertsDocumentViewer"
cordova-plugin-file 6.0.1 "Fichier"
cordova-plugin-file-transfer 1.7.1 "Transfert de fichiers"
cordova-plugin-inappbrowser 3.0.0 "InAppBrowser"
cordova-plugin-ionic-keyboard 2.1.2 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 2.0.2 "cordova-plugin-ionic-webview"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-whitelist 1.3.3 "Liste blanche"
cordova-plugin-youtube-video-player 1.0.6 "CordovaYoutubeVideoPlayer"
onesignal-cordova-plugin 2.4.3 "Notifications Push OneSignal"

J'ai d'autres applications avec les mêmes dépendances à l'exception de OneSignal et je n'ai pas de rejet de stockage.

Je viens de réessayer, j'ai envoyé quelques builds, en basculant la version iOS 10.4 (problème détecté) > 11.3 (problème détecté) et en revenant à 10.4 (aucun problème détecté).
Peut-être une erreur du système de révision automatique du code Apple ?

Puis après de nombreux tests, j'ai supprimé OneSignal pour problème de compatibilité avec le plugin YouTubePlayer et l'ai remplacé par un autre plugin de notification. Même problème avec ce deuxième fournisseur de notification. La seule façon de résoudre le problème de messagerie Apple est d'ajouter une clé au fichier info.plist comme ceci :
<key>NSLocationAlwaysUsageDescription</key> <string>Send Geolocated notifications</string> <key>NSLocationWhenInUseUsageDescription</key> <string>Send Geolocated notifications</string>
L'ajout d'une entrée dans le fichier config.xml n'effectue pas la mise à jour requise du fichier info.plist.

Je pense que c'est à cause de Unity lui-même. Nous n'utilisons pas ce SDK mais avons reçu le même message de l'App Store Connect il y a quelques instants.
Unity inclut un fichier appelé iPhone_Sensors.mm . Dedans, il y a le code suivant :

void LocationService::StartUpdatingLocation()
{
    if (gLocationServiceStatus.locationStatus != kLocationServiceRunning)
    {
        CLLocationManager* locationManager = gLocationServiceStatus.GetLocationManager();

        // request authorization on ios8
        if ([locationManager respondsToSelector: @selector(requestWhenInUseAuthorization)])
            [locationManager performSelector: @selector(requestWhenInUseAuthorization)];

        locationManager.desiredAccuracy = gLocationServiceStatus.desiredAccuracy;
        // Set a movement threshold for new events
        locationManager.distanceFilter = gLocationServiceStatus.distanceFilter;

#if PLATFORM_IOS
        [locationManager startUpdatingLocation];
#else
        [locationManager requestLocation];
#endif

        gLocationServiceStatus.locationStatus = kLocationServiceInitializing;
    }
}

La documentation de requestWhenInUseAuthorization indique :

Lorsque l'état d'autorisation actuel est kCLAuthorizationStatusNotDetermined , cette méthode s'exécute de manière asynchrone et invite l'utilisateur à autoriser l'application à utiliser les services de localisation. L'invite utilisateur contient le texte à partir du NSLocationWhenInUseUsageDescription clé de votre application Info.plist fichier, et la présence de cette clé est requise lors de l' appel de cette méthode.

Il semble qu'Apple ait changé quelque chose dans son traitement, ce qui déclenche le message maintenant.

Merci pour l'info utile. Il semble qu'Apple scanne simplement le bitcode pour toute utilisation des services de localisation. Notre SDK accède indirectement aux services de localisation pour éviter un plantage si une application n'utilise pas les services de localisation, ils doivent donc également analyser les chaînes....

C'est un peu ridicule compte tenu du nombre de dépendances/frameworks utilisant des services de localisation, mais uniquement dans certaines conditions qui peuvent ne pas s'appliquer à certaines applications.

Je garderai ce problème ouvert jusqu'à ce que nous ayons trouvé une solution.

Comme solution de contournement temporaire, si vous n'utilisez pas de notifications push basées sur la localisation, vous pouvez appeler OneSignal.setLocationShared(false) . Cela désactivera l'accès à la localisation depuis notre SDK. Si vous ajoutez les autorisations de localisation à votre info.plist, Apple cessera de vous envoyer ces avertissements, mais tant que votre application ne demande jamais d'autorisation de localisation, les chaînes de plist ne seront pas utilisées.

Pouces vers le haut! @EthanCG et @Nightsd01

Pour l'instant, je viens d'ajouter les chaînes d'autorisation OneSignal.SetLocationShared (false) et NSLocation et de télécharger le binaire. Voila ! Aucun e-mail d'erreur. Et il n'y a pas non plus d'autorisation de localisation dans l'application. Donc, cela pourrait être une solution de contournement possible à l'époque.

Merci a tous

Sans apporter de modifications, je n'ai reçu aucun e-mail d'Apple aujourd'hui après avoir poussé une version vers l'App Store.

Nous avons entendu dire qu'il s'agissait d'un bogue avec l'analyse statique d'Apple pour les téléchargements de nouvelles versions et qu'il a été corrigé - nous n'avons entendu aucune plainte supplémentaire, je vais donc clore ce problème.

Si quelqu'un voit un e-mail comme celui-ci à l'avenir, veuillez le poster ici.

Je viens de recevoir exactement le même e-mail. Aucun nouveau plugin n'a été ajouté et les versions précédentes ont été acceptées très bien.

Nous avons également reçu le même e-mail aujourd'hui. Je ne sais pas s'il s'agit d'un autre accord unique ou Apple pense vraiment que nous utilisons des API de localisation. J'ai recherché "NSLocation" dans le projet xcode généré par la version iOS de Unity et je n'ai trouvé que libOneSignal.a ayant une correspondance.

MISE À JOUR : CLLocationManager se trouve à la fois dans iPhone_Sensors.mm et libOneSignal.a de Unity. OneSignal l'utilise indirectement via NSClassFromString. iPhone_Sensors.mm l'utilise explicitement.

UPDATE2 : Unity a une API LocationService intégrée qui utilise iPhone_Sensors.mm. Même si nous n'utilisons pas LocationService dans notre application, CLLocationManager semble être lié à la sortie finale de notre application iOS à cause de cela. Je ne sais pas si l'utilisation implicite de libOneSignal.a est également prise en compte par Apple. Mais tant que nous utilisons Unity, il ne semble pas que nous puissions nous en sortir sans fournir NSLocationAlwaysUsageDescription. Cela semble être la nouvelle politique d'Apple pour le "printemps 2019".

@VitorGit Pouvez-vous vérifier si vous avez la bibliothèque Core Location dans votre projet Xcode. Si oui, pouvez-vous le supprimer ?

@gnoph Merci pour tous les détails. Si vous supprimez la bibliothèque Core Location du projet généré, obtenez-vous des erreurs de compilation avec iPhone_Sensors.mm ? Je suppose que oui, mais il est possible qu'il y ait des préprocesseurs qui gèrent cela.

Salut, @jkasten2.

Merci pour l'astuce. Je viens de réaliser que les utilisations de CoreLocation de iPhone_Sensors.mm sont conditionnelles à la macro de préprocesseur UNITY_USES_LOCATION, qui est actuellement définie sur 0 dans notre projet. C'est-à-dire que notre application ne dépend pas du framework CoreLocation. Le cadre est inclus dans le projet mais n'est étiqueté avec aucune cible. Le supprimer du projet n'affecte pas la construction. Je n'ai pas encore essayé la soumission App Store.

Maintenant, je pense que notre application n'a pas du tout de références explicites aux API CoreLocation dans le binaire. Je suppose qu'Apple l'a en quelque sorte détecté dans la bibliothèque OneSignal, même s'il est utilisé indirectement.

@VitorGit Pouvez-vous vérifier si vous avez la bibliothèque Core Location dans votre projet Xcode. Si oui, pouvez-vous le supprimer ?

@gnoph Merci pour tous les détails. Si vous supprimez la bibliothèque Core Location du projet généré, obtenez-vous des erreurs de compilation avec iPhone_Sensors.mm ? Je suppose que oui, mais il est possible qu'il y ait des préprocesseurs qui gèrent cela.

@gnoph C'est bien d'entendre que la suppression de la bibliothèque vous permet toujours de construire. Il se peut qu'Apple détecte son utilisation au moment de l'exécution lors de l'évaluation de l'application. Par conséquent, la suppression de Core Location signifie que OneSignal n'essaiera même pas de vérifier l'autorisation. Cela fait peut-être une analyse statique, c'est difficile à dire.

Tenez-nous au courant des résultats de votre dernière soumission.

Même problème ici, l'e-mail dit

Cher développeur,

Nous avons identifié un ou plusieurs problèmes avec une livraison récente pour votre application, "MY APP NAME". Veuillez corriger les problèmes suivants, puis télécharger à nouveau.

"Chaîne d'objectif manquante dans le fichier Info.plist. Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. n'utilisez pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple .com/documentation/uikit/core_app/protecting_the_user_s_privacy)."

Meilleures salutations,

L'équipe de l'App Store

Est-ce un bug d'Apple ? Qu'est-ce que nous supposons faire avec ça?

Certaines parties du SDK OneSignal iOS permettent aux applications d'utiliser le ciblage géographique pour les notifications push (notifications de barrière géographique). Apple semble maintenant rechercher dans les applications tout code utilisant des services de localisation, même si l'application ne l'utilise pas réellement.

Ce qui est... insensé et ennuyeux.

À court terme, je recommanderais de mettre une chaîne NSLocationAlwaysUsageDescription dans votre Info.plist même si votre application ne l'utilise pas réellement. Si votre application appelle setLocationShared(false) notre SDK ne demandera pas à l'utilisateur l'autorisation de localisation.

C'est ennuyeux, mais c'est Apple pour vous.

À long terme, diviser la fonctionnalité de localisation dans une bibliothèque OneSignal/Location Cocoapod distincte devrait être une solution plus permanente.

@Nightsd01 Après avoir fait ce que vous avez dit (ajout de NSLocationAlwaysUsageDescription et setLocationShared (false)), je reçois l'e-mail de suivi...

Cher développeur,

Nous avons identifié un ou plusieurs problèmes avec une livraison récente pour votre application, "MY APP NAME". Veuillez corriger les problèmes suivants, puis télécharger à nouveau.

Meilleures salutations,

L'équipe de l'App Store

Leur système est probablement cassé en ce moment.

@Nightsd01 Après avoir fait ce que vous avez dit (ajout de NSLocationAlwaysUsageDescription et setLocationShared (false)), je reçois l'e-mail de suivi...

Cher développeur,
Nous avons identifié un ou plusieurs problèmes avec une livraison récente pour votre application, "MY APP NAME". Veuillez corriger les problèmes suivants, puis télécharger à nouveau.
Meilleures salutations,
L'équipe de l'App Store

Leur système est probablement cassé en ce moment.

J'ai fait la même chose, même erreur. J'espère que c'est un problème temporaire de l'App Store.

@jkasten2 Nous avons soumis la version sans framework CoreLocation dans le projet xcode et avons toujours reçu le même avertissement d'Apple. Le framework n'était pas réellement utilisé avant que je ne le supprime, il est juste dans le projet mais n'est lié à aucune des cibles. Je pense que le supprimer n'a pas fait de différence pour le binaire de l'application.

@gnoph C'est bien d'entendre que la suppression de la bibliothèque vous permet toujours de construire. Il se peut qu'Apple détecte son utilisation au moment de l'exécution lors de l'évaluation de l'application. Par conséquent, la suppression de Core Location signifie que OneSignal n'essaiera même pas de vérifier l'autorisation. Cela fait peut-être une analyse statique, c'est difficile à dire.

Tenez-nous au courant des résultats de votre dernière soumission.

Quelqu'un peut-il confirmer que l'appel de setLocationShared(false) sans ajouter les chaînes à Info.plist fonctionne ? Ou sommes-nous censés faire les deux choses ?

@bolino ajoute les chaînes à votre Info.plist . C'est une situation idiote grâce à Apple mais c'est malheureusement la solution actuelle. Heureusement, rien de tout cela ne sera visible pour vos utilisateurs.

Même!

Veuillez diviser le pod dès que possible. En attendant, je vais utiliser les notifications Firebase. ️

J'ai dû remplir cette question pour trouver la réponse qui m'a pointé ici.
https://stackoverflow.com/q/56777940/860311

Utilisez simplement

NSEmplacementToujoursEtQuandEnUtilisationUtilisationDescription

au lieu de NSLocationAlwaysUsageDescription + NSLocationWhenInUseUsageDescription

Apple est si bêtement secret à propos de leurs tweeks ..

Idem en v2.13.

ITMS-90683 : Chaîne d'objectif manquante dans Info.plist - Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur doivent inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683 : Chaîne d'objectif manquante dans Info.plist - Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationWhenInUseUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur doivent inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Merci pour l'info utile. Il semble qu'Apple scanne simplement le bitcode pour toute utilisation des services de localisation. Notre SDK accède indirectement aux services de localisation pour éviter un plantage si une application n'utilise pas les services de localisation, ils doivent donc également analyser les chaînes....

C'est un peu ridicule compte tenu du nombre de dépendances/frameworks utilisant des services de localisation, mais uniquement dans certaines conditions qui peuvent ne pas s'appliquer à certaines applications.

Je garderai ce problème ouvert jusqu'à ce que nous ayons trouvé une solution.

Comme solution de contournement temporaire, si vous n'utilisez pas de notifications push basées sur la localisation, vous pouvez appeler OneSignal.setLocationShared(false) . Cela désactivera l'accès à la localisation depuis notre SDK. Si vous ajoutez les autorisations de localisation à votre info.plist, Apple cessera de vous envoyer ces avertissements, mais tant que votre application ne demande jamais d'autorisation de localisation, les chaînes de plist ne seront pas utilisées.

salut @Nightsd01 . Je me rends compte que vos réponses ici remontent à quelques années maintenant. Mais je vis cela maintenant comme un avertissement (testflight uniquement, je n'ai pas encore de version de production). Et je me demandais si vous savez si nous utilisons cette solution de contournement (merci pour cela d'ailleurs), savez-vous par hasard si « Emplacement » apparaîtra sous « Informations » sur la page de l'application dans l'App Store ? C'est ma préoccupation car cela pourrait dissuader les téléchargements, car les gens peuvent penser que nous utilisons l'emplacement alors que ce n'est pas le cas. Merci!

Je viens d'intégrer OneSignal dans mon application iOS et j'ai reçu cet avertissement ce soir, après avoir soumis des versions précédentes qui ne l'ont pas fait.

Je reçois toujours cet e-mail :

ITMS-90683 : Chaîne d'objectif manquante dans Info.plist - Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur doivent inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).ITMS-90683 : Chaîne d'objectif manquante dans Info.plist - Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationWhenInUseUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur doivent inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy). Après avoir corrigé les problèmes, vous pouvez télécharger un nouveau binaire sur App Store Connect. Cordialement, L'équipe App Store | ITMS-90683 : Chaîne d'objectif manquante dans Info.plist - Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur doivent inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).ITMS-90683 : Chaîne d'objectif manquante dans Info.plist - Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationWhenInUseUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur doivent inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy). Après avoir corrigé les problèmes, vous pouvez télécharger un nouveau binaire sur App Store Connect. Cordialement, L'équipe App Store
-- | --
ITMS-90683 : Chaîne d'objectif manquante dans Info.plist - Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur doivent inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).ITMS-90683 : Chaîne d'objectif manquante dans Info.plist - Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationWhenInUseUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin des données. À partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur doivent inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, ils peuvent référencer des API qui nécessitent une chaîne d'objectif. Bien que votre application n'utilise peut-être pas ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API. En savoir plus (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy). Après avoir corrigé les problèmes, vous pouvez télécharger un nouveau binaire sur App Store Connect. Cordialement, L'équipe App Store

Je reçois parfois l'avertissement, parfois non.

Question idiote, mais qu'est-ce que quelqu'un mettrait dans NSLocationAlwaysAndWhenInUseUsageDescription (ou NSLocation * ) ? Je veux dire, après tout, l'application ne l'utilise pas...

@MihaMarkic 'Nous devons accéder à votre emplacement pour vous envoyer les notifications appropriées' par exemple

Cette page vous a été utile?
0 / 5 - 0 notes