Fehler Appstore-Verbindung: Fehlende Zweckzeichenfolge in der Datei Info.plist

151

Ich habe meine App zur Überprüfung an den App Store Connect gesendet. Obwohl die App noch geprüft wird, habe ich eine E-Mail erhalten, um mich darüber zu informieren, dass ich einen Fehler beheben muss. Hier ist der Inhalt der Nachricht:

Sehr geehrter Entwickler,

Wir haben ein oder mehrere Probleme mit einer kürzlich gelieferten App für Ihre App XXXXX festgestellt. Ihre Lieferung war erfolgreich, aber Sie möchten möglicherweise die folgenden Probleme bei Ihrer nächsten Lieferung beheben:

"Fehlende Zweckzeichenfolge in der Info.plist-Datei. Der Code Ihrer App verweist auf eine oder mehrere APIs, die auf vertrauliche Benutzerdaten zugreifen. Die Info.plist-Datei der App sollte einen NSLocationAlwaysUsageDescription-Schlüssel mit einer benutzerbezogenen Zweckzeichenfolge enthalten, die klar und vollständig erklärt, warum Ihre App benötigt wird Ab Frühjahr 2019 müssen alle an den App Store gesendeten Apps, die auf Benutzerdaten zugreifen, eine Zweckzeichenfolge enthalten. Wenn Sie externe Bibliotheken oder SDKs verwenden, verweisen sie möglicherweise auf APIs, für die eine Zweckzeichenfolge erforderlich ist Möglicherweise werden diese APIs nicht verwendet. Es ist jedoch weiterhin eine Zweckzeichenfolge erforderlich. Sie können sich an den Entwickler der Bibliothek oder des SDK wenden und anfordern, dass er eine Version seines Codes veröffentlicht, die die APIs nicht enthält.

Nachdem Sie die Probleme behoben haben, können Sie mit Xcode oder Application Loader eine neue Binärdatei in iTunes Connect hochladen.

Freundliche Grüße,

Das App Store Team

Meine App ist vollständig mit Expo erstellt und ich weiß nicht, wie ich auf die Info.plist zugreifen und sie ändern soll.

Irgendeine Idee?

John Doe
quelle
3
Ich habe das gleiche Problem mit dem neuesten Build, da ich in meiner App nicht einmal Location Services verwende. Und Apple hat kein offizielles Dokument über diese Änderung.
Huong
3
+1 Habe vor 2 Tagen eine Veröffentlichung für dieselbe App gemacht und alles ist in Ordnung. 2 Tage später habe ich nur ein paar Codezeilen geändert, um eine neue Version zu erstellen (ich habe keine weiteren Pods oder ähnliches hinzugefügt) und ich habe diese Nachricht erhalten
Tiago Ornelas
2
Wir haben das gleiche Problem erlebt. Ich vermute, es ist ein Fehler im Genehmigungsprozess (hoffentlich). Ich werde das Wochenende ignorieren und hoffe, dass es am Montag behoben ist.
AMB
2
Ich hatte gerade genau das gleiche Problem, obwohl unsere App nicht wirklich immer Ortungsdienste benötigt. Es benötigt nur NSLocationWhenInUseUsageDescription, für die wir bereits eine Zweckzeichenfolge haben. Wahrscheinlich ist dies nur eine Panne bei Apple?
ilight
3
Und auf Apple-Art ist der Link, den sie in der E-Mail zur Behebung bereitstellen, defekt.
Gwalshington

Antworten:

44

Wenn Sie Expo verwenden, können Sie eine Lösung hinzufügen, indem Sie infoPlist wie folgt zu app.json hinzufügen:

  "expo": {
     "ios": {
       "bundleIdentifier": "com.app.myapp",
       "infoPlist": {
         "NSLocationAlwaysUsageDescription": "Some message to appease Apple.",
       },
     },
   }

Expo Docs

Gwalshington
quelle
25
Eigentlich ist es NICHT "eine Nachricht, um Apple zu beschwichtigen", sondern um den Benutzer wissen zu lassen, WAS Sie in diesem Fall mit den vom Benutzer generierten Daten (Standort) tun. Es ist eine Frage der Privatsphäre und ich denke, es ist gut, fair zu Ihren Apps-Nutzern zu sein.
Lookaji
4
Erwischt! Ich dachte an Neulinge, die vielleicht versucht sind, es so zu lassen! Ich wollte nicht mürrisch klingen :) Prost!
Lookaji
@gwalshington Ich habe kein Ausstellungsobjekt in app.json
Heemanshu Bhalla
@ HeemanshuBhalla hmm, ich bin mir nicht sicher warum. In meiner app.json befindet es sich oben und das erste deklarierte Objekt. Hier geben Sie die Versionsnummer, die Bundle-ID usw. an. Wenn Sie die App ausgeworfen haben, sieht sie möglicherweise etwas anders aus?
Gwalshington
2
Welchen Text geben Sie ein, wenn wir keine Standortdaten erfassen? Wir müssen uns eine Lüge
ausdenken
61

BEARBEITEN April 2019 : Sie müssen diese beiden Schlüssel jetzt hinzufügen, da das Frühjahr 2019 begonnen hat. Beachten Sie, dass dies NSLocationAlwaysUsageDescriptionjetzt veraltet ist (seit iOS 11) und durch NSLocationAlwaysAndWhenInUseUsageDescriptionund ersetzt wurde NSLocationWhenInUseUsageDescription. Wenn Sie weniger als iOS 11 unterstützen möchten, müssen Sie die drei Werte verwenden.

Um zusammenzufassen, müssen Sie:

  • Fügen Sie NSLocationAlwaysAndWhenInUseUsageDescriptionAND NSLocationWhenInUseUsageDescriptionfür iOS 11 und mehr hinzu
  • Und fügen NSLocationAlwaysUsageDescriptionSie hinzu, wenn Sie iOS 10 und weniger unterstützen möchten
  • Und schließlich können Sie hinzufügen, NSLocationUsageDescriptionwenn Sie iOS 8 und weniger unterstützen möchten.


Sie können Ihre App auch dann einreichen, wenn Sie diese Nachricht erhalten haben!

Ich habe gestern das gleiche Problem gehabt, auch wenn die App die Standortfunktion nicht verwendet. Dies kann mit einem im Projekt enthaltenen Framework zusammenhängen, das über diese optionale Funktion verfügt.

Ich kann bestätigen, dass meine App auch ohne die genehmigt wurdeNSLocationAlwaysUsageDescription und NSLocationWhenInUseUsageDescriptionSchlüssel ininfo.plist

In der Tat, wie Apple in der Mail feststellte:

Ab Frühjahr 2019 müssen alle an den App Store gesendeten Apps, die auf Benutzerdaten zugreifen, eine Zweckzeichenfolge enthalten.

Das einzige, was Sie tun müssen, ist, diesen Schlüssel (im Moment ist er besser, damit Sie ihn nicht vergessen) in Ihr Projekt einzufügen, damit er in Ihrem nächsten Update enthalten ist .

Fügen Sie einfach zwei neue Einträge in Ihre info.plist, mit NSLocationAlwaysUsageDescriptionund NSLocationWhenInUseUsageDescriptionals Schlüssel ein und eine kurze Beschreibung, warum Sie sie als Wert verwenden (auch wenn Sie sie nicht wirklich verwenden ...).

AnthoPak
quelle
2
Sind Sie bei Ihrer Bearbeitung im April 2019 sicher, dass die Abschreibung nicht rückgängig gemacht wurde? Nach dem, was ich sehe, ist NSLocationUsageDescription diejenige, die veraltet ist. Suchen Sie hier: developer.apple.com/library/archive/documentation/General/…
Apricity
In der E-Mail, die ich von Apple erhalten habe, wird NSLocationAlwaysUsageDescription erwähnt. Ich denke, er hat es umgekehrt.
Dror Bar
@apricity @DrorBar Sorry Leute, tatsächlich hatte ich einen Fehler gemacht. Es wurde nicht rückgängig gemacht, aber es gab immer noch einen Fehler, NSLocationAlwaysUsageDescriptionsollte durch NSLocationAlwaysAndWhenInUseUsageDescriptionund ersetzt NSLocationWhenInUseUsageDescription werden und nicht durch NSLocationUsageDescription(wie ich bereits schrieb, sorry ...). Ich habe meine Antwort aktualisiert, um eine Zusammenfassung des Prozesses hinzuzufügen.
AnthoPak
47

Ich habe einige Apps im Store und habe versucht, eine Version für die Qualitätssicherung zu verteilen. Dasselbe geschah in zwei verschiedenen Apps. Ich denke, dies ist ein neues Kriterium, um die Build-Uploads zu Appstore Connect zu akzeptieren.

Die Lösung ist einfach: Fügen Sie die folgenden Zeilen in die .plist-Datei ein.

<key>NSLocationAlwaysUsageDescription</key>

<string>custom message</string>

<key>NSLocationWhenInUseUsageDescription</key>

<string>custom message</string>

PS: In meinem Fall habe ich keine Standortfunktion verwendet, aber ich habe diese Zeilen hinzugefügt, um den Appstore-Verbindungsrichtlinien zu entsprechen. Übrigens, nachdem ich diese E-Mail erhalten hatte, konnte ich die App testen, selbst wenn sie sagten, dass der Build einige Probleme hatte.

Ich hoffe diese Arbeit für euch.

vroldan
quelle
5
Wow, ich habe das gerade verstanden und festgestellt, dass jeder das auch bekommt!
Cameron A. Ellis
Der erste Schlüssel wurde ab sofort geändert in<key>NSLocationUsageDescription</key>
Hudi Ilfeld
1
Müssen wir nach der Aktualisierung der info.plist erneut archivieren?
Bishoy Hanna
Muss ich die Bundle-Version oder Versionsnummer erhöhen, um eine neue Binärdatei hochzuladen?
Dror Bar
19

Es ist eine neue Anforderung von Apple, auch wenn Sie keinen Standort verwenden. Wenn Sie die Berechtigungen in Xcode hinzufügen möchten, suchen Sie nach "Datenschutz - Standortverwendungsbeschreibung" und "Datenschutz - Standort bei Verwendung Verwendungsbeschreibung" und geben Sie für jeden eine benutzerdefinierte Zeichenfolge ein.

Geben Sie hier die Bildbeschreibung ein

Juan José Ramírez
quelle
1
In einem anderen App-Update hat Apple auch diese Erlaubnis angefordert: "Datenschutz - Standort immer Nutzungsbeschreibung"
Juan José Ramírez
2
Also, wenn ich diese Funktionen nicht benutze, was muss ich dort schreiben, eine Lüge, so etwas wie "Ort für zukünftige Verwendung sammeln, vielleicht"?
Ruslan Shashkov
Ja, Apple wird Sie erreichen, wenn sie Fragen haben
Juan José Ramírez
Ich kann die Informationseigenschaftsliste in meinem xcode 10.1 nicht finden. Sie sollten angegeben haben, wo sie zu finden ist. Ich habe nach Build-Einstellungen sowohl für Ziele als auch für Projekte
gesucht
1
Okay, also Targets-> Info-> Custom ios Target Properties war der genaue Ort
Awais Nasir
15

Zur Vereinfachung können Sie diese Zeilen in Ihre info.plist einfügen. Diese Fehler treten auf, da ab Frühjahr 2019 alle Apps, die an den App Store gesendet werden und auf Benutzerdaten zugreifen, eine Zweckzeichenfolge enthalten müssen.

  1. Öffnen Sie info.plist als Quellcode.
  2. Fügen Sie die folgenden Zeilen in Ihre Liste ein

    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
Sachin Nautiyal
quelle
2
Ich musste zusätzliche Leerzeichen in <key> -Tags entfernen und dann funktionierte es.
Innich
@innich danke für den Hinweis, ich habe meine Antwort geändert.
Sachin Nautiyal
8
## Verwenden Sie diesen Schlüssel in der Datei info.plist

NSLocationAlwaysUsageDescription Ihr Standort ist für xyz-Vorteile für Sie erforderlich. NSLocationWhenInUseUsageDescription Ihr Standort ist für xyz-Vorteile für Sie erforderlich

Sumit Sharma
quelle
8

Wir haben dieselbe E-Mail erhalten und verwenden den CoreLocation überhaupt nicht. Nach einer kurzen Suche stellten wir fest, dass das Parse SDK CoreLocation verwenden kann. In Apples E-Mail heißt es deutlich:

Wenn Sie externe Bibliotheken oder SDKs verwenden, verweisen diese möglicherweise auf APIs, für die eine Zweckzeichenfolge erforderlich ist.

Dies bedeutet, dass Sie in dem Moment, in dem Ihr Code oder eine andere Bibliothek oder ein anderes SDK CoreLocation verwenden kann, auch wenn Sie es nicht verwenden, eine Datenschutzbeschreibung für "When In Use" und "Always Use" angeben müssen.

Es ist auch etwas Neues von Apple und im Moment nur eine Warnung, aber es wird ab Frühjahr 2019 für neue Einreichungen erforderlich sein.

sebleclerc
quelle
Es ist einfach nur dumm ... Wenn ich es nicht benutze, könnte es dazu führen, dass Leute meine App nicht einfach deswegen herunterladen. -_-
Mayoul
3
Nicht wirklich. Die Warnung, in der Sie aufgefordert werden, Ihre Lokalisierung zu verwenden, wird nur angezeigt, wenn irgendwo im Code der CLLocationManager.requestWhenInUseAuthorization()Aufruf erfolgt. Apple analysierte jeden App-Code, um festzustellen, ob eine solche Funktion aufgerufen werden kann. Wenn es nie aufgerufen wird, wird die Warnung nicht angezeigt.
Sebleclerc
6

Dieses Problem tritt auf, weil Sie es nicht aufgenommen haben

 <NSLocationAlwaysUsageDescription>

für Ihre App. Ich hatte das gleiche Problem, als ich versuchte, meine App im AppStore einzureichen. Nachdem die App verarbeitet wurde, erhielt ich die gleiche Mail. Ich habe gerade die Beschreibung hinzugefügt und jetzt ist sie gelöst.

Hoffe das hilft.

Sachin Nautiyal
quelle
Das hat mir geholfen. Wenn Sie Location in Ihrer App verwenden (oder vielleicht immer), müssen Sie diese Zeile und eine Zeichenfolge darunter hinzufügen. <key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
Maylor Taylor
6

Es gibt folgende Fälle:

NSLocationAlwaysAndWhenInUseUsageDescription (iOS>11)
NSLocationWhenInUseUsageDescription          (iOS>11)
NSLocationAlwaysUsageDescription             (iOS<=10)
NSLocationUsageDescription                   (seems very old, iOS8?)

Apple gibt an:

Fügen Sie den NSLocationWhenInUseUsageDescriptionSchlüssel und den NSLocationAlwaysAndWhenInUseUsageDescriptionSchlüssel zu Ihrer Info.plist- Datei hinzu.

und:

Wenn Ihre App iOS 10 und früher unterstützt, fügen Sie das hinzu NSLocationAlwaysUsage

NSLocationUsageDescription scheint tot zu sein, der einzige Hinweis auf der ADC-Site ist: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

Verwenden Sie also zunächst 3.

ingconti
quelle
3

Diese Antworten zeigen Ihnen alle, wie Sie die App Store-Regeln einhalten müssen, um die Warnung zu vermeiden. Die wahre Lösung wäre jedoch, dass Expo es Ihnen ermöglicht, die SDK-Anforderungen für Ortungsdienste zu deaktivieren, sofern Sie sie nicht tatsächlich verwenden. Ich bin mir nicht sicher, ob dies der Fall ist möglich.

Calvin
quelle
3

Das gleiche Problem wurde am 19. Februar mit einer E-Mail mit einer Reihe von Berechtigungen beantwortet, die ich nicht verwende. Ich gehe davon aus, dass sie von Plugins stammen. Apple sagt im 19. März, dass es eine Anforderung ist, also füge ich diese in info.plst hinzu und lade sie erneut hoch.

Es ist in der Tat sehr dumm.

Panda Power
quelle
2
Eigentlich eher ein Kommentar ...?
Steve
3

Ich habe auch das gleiche Problem, aber nach 27 Stunden erhielt ich die E-Mail über genehmigt, obwohl ich nichts getan habe. Warten Sie also ungefähr 24 Stunden, anstatt den gesamten Vorgang erneut auszuführen.

Abdul Qayum
quelle
1
Ja, es ist ein Fehler!
Danh Huynh
2

Ich hatte <key>NSLocationWhenInUseUsageDescription </key> statt <key>NSLocationWhenInUseUsageDescription</key>

Stellen Sie sicher, dass nachgestellte Leerzeichen entfernt werden

Michael van de Waeter
quelle
2

Bitte überprüfen Sie die E-Mail, die Sie von ** App Store Connect ** erhalten haben.

Identifizieren Sie den fehlenden Schlüssel Geben Sie hier die Bildbeschreibung ein

Anleitung

  1. Öffnen Sie die Datei info.plist.

  2. Fügen Sie den fehlenden Schlüssel hinzu und suchen Sie ihn aus den verfügbaren Optionen (z. B. Kontakte = Datenschutz - Beschreibung der Verwendung von Kontakten).

  3. Beschreibung der Verwendung hinzufügen:

$ (PRODUCT_NAME) benötigt Kontaktzugriff auf "Geben Sie hier den Grund an".

Beispiel:

Zeus
quelle
1
Sir, ich habe den gleichen Fehler erhalten, aber warum zur info.plist hinzufügen? Ich habe die Kontaktfunktion in meiner App nicht verwendet. Warum müssen wir sie hinzufügen?
Kapil soni
@Kapilsoni Bitte stellen Sie sicher, dass Sie nicht auf eine oder mehrere APIs zugreifen, die Zugriff auf vertrauliche Benutzerdaten haben
Zeus
1
: Sir Ich habe nur Kamera und Standort in meiner App verwendet?
Kapil soni
2

Kopieren Sie mit Xcode 11 den Schlüssel NSLocationAlwaysUsageDescriptionund fügen Sie ihn zu Info-> Custom iOS Target Properties-> Klicken Sie +unten links auf dieser Registerkarte und geben Sie als Wert eine Beschreibung wie ein This app requires location access to function properly..

Daniel Danielecki
quelle
2

"Fehlende Zweckzeichenfolge in der Info.plist-Datei. Der Code Ihrer App verweist auf eine oder mehrere APIs, die auf vertrauliche Benutzerdaten zugreifen. Die Info.plist-Datei der App sollte einen NSLocationAlwaysUsageDescription-Schlüssel mit einer benutzerbezogenen Zweckzeichenfolge enthalten, die klar und vollständig erklärt, warum Ihre App benötigt wird Ab Frühjahr 2019 müssen alle an den App Store gesendeten Apps, die auf Benutzerdaten zugreifen, eine Zweckzeichenfolge enthalten. Wenn Sie externe Bibliotheken oder SDKs verwenden, verweisen sie möglicherweise auf APIs, für die eine Zweckzeichenfolge erforderlich ist Möglicherweise werden diese APIs nicht verwendet. Es ist jedoch weiterhin eine Zweckzeichenfolge erforderlich. Sie können sich an den Entwickler der Bibliothek oder des SDK wenden und ihn auffordern, eine Version seines Codes freizugeben, die die APIs nicht enthält.

Öffnen Sie info.plist als Quellcode.
Fügen Sie die folgenden Zeilen in Ihre Liste ein

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
Supriya
quelle
1

Meine App hat auch das , und ich tue nichts dagegen, aber es kann gut laufen. Wenn ich das nächste Mal denke, dass ich einen solchen Schlüssel in plist hinzufügen sollte, mache einfach eine Beschreibung

liunianhuaguoyanxi
quelle
1

Eine kurze Antwort auf das obige Problem -

NSLocationAlwaysUsageDescription muss mit der folgenden Beschreibung in der Datei Info.plist aktualisiert werden

{Ihr App-Name} erfordert Zugriff auf den Standort, um Dengue-Ausbruchszonen vorzuschlagen.

Soman Dubey
quelle
0

In unserem Fall haben wir NSLocationWhenInUseUsageDescriptionin unserer App verwendet, aber nicht NSLocationAlwaysUsageDescription.

Wenn man die Kommentare hier liest (danke Matt-Oakes), sieht es so ausNSLocationAlwaysUsageDescription dass es von einem der von uns verwendeten Abhängigkeits-Frameworks verwendet wird.

Wenn Sie unsere App ausführen, wird die tatsächliche Berechtigungsmodalität für NSLocationAlwaysUsageDescription nicht angezeigt. Daher wird dies nur im Hintergrund behandelt.

Zusammenfassend hat das Hinzufügen NSLocationAlwaysUsageDescriptionzur Info.plist die Warn-E-Mail behoben und kein Verhalten in der App geändert 👍🏻

Harry Bloom
quelle