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?
quelle
Antworten:
Wenn Sie Expo verwenden, können Sie eine Lösung hinzufügen, indem Sie infoPlist wie folgt zu app.json hinzufügen:
Expo Docs
quelle
BEARBEITEN April 2019 : Sie müssen diese beiden Schlüssel jetzt hinzufügen, da das Frühjahr 2019 begonnen hat. Beachten Sie, dass dies
NSLocationAlwaysUsageDescription
jetzt veraltet ist (seit iOS 11) und durchNSLocationAlwaysAndWhenInUseUsageDescription
und ersetzt wurdeNSLocationWhenInUseUsageDescription
. Wenn Sie weniger als iOS 11 unterstützen möchten, müssen Sie die drei Werte verwenden.Um zusammenzufassen, müssen Sie:
NSLocationAlwaysAndWhenInUseUsageDescription
ANDNSLocationWhenInUseUsageDescription
für iOS 11 und mehr hinzuNSLocationAlwaysUsageDescription
Sie hinzu, wenn Sie iOS 10 und weniger unterstützen möchtenNSLocationUsageDescription
wenn 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 wurde
NSLocationAlwaysUsageDescription
undNSLocationWhenInUseUsageDescription
Schlüssel ininfo.plist
In der Tat, wie Apple in der Mail feststellte:
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
, mitNSLocationAlwaysUsageDescription
undNSLocationWhenInUseUsageDescription
als Schlüssel ein und eine kurze Beschreibung, warum Sie sie als Wert verwenden (auch wenn Sie sie nicht wirklich verwenden ...).quelle
NSLocationAlwaysUsageDescription
sollte durchNSLocationAlwaysAndWhenInUseUsageDescription
und ersetztNSLocationWhenInUseUsageDescription
werden und nicht durchNSLocationUsageDescription
(wie ich bereits schrieb, sorry ...). Ich habe meine Antwort aktualisiert, um eine Zusammenfassung des Prozesses hinzuzufügen.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.
quelle
<key>NSLocationUsageDescription</key>
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.
quelle
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.
Fügen Sie die folgenden Zeilen in Ihre Liste ein
quelle
NSLocationAlwaysUsageDescription Ihr Standort ist für xyz-Vorteile für Sie erforderlich. NSLocationWhenInUseUsageDescription Ihr Standort ist für xyz-Vorteile für Sie erforderlich
quelle
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:
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.
quelle
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.Dieses Problem tritt auf, weil Sie es nicht aufgenommen haben
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.
quelle
<key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
Es gibt folgende Fälle:
Apple gibt an:
und:
NSLocationUsageDescription
scheint tot zu sein, der einzige Hinweis auf der ADC-Site ist: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdfVerwenden Sie also zunächst 3.
quelle
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.
quelle
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.
quelle
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.
quelle
Ich hatte
<key>NSLocationWhenInUseUsageDescription </key>
statt<key>NSLocationWhenInUseUsageDescription</key>
Stellen Sie sicher, dass nachgestellte Leerzeichen entfernt werden
quelle
Bitte überprüfen Sie die E-Mail, die Sie von ** App Store Connect ** erhalten haben.
Identifizieren Sie den fehlenden Schlüssel
Anleitung
Öffnen Sie die Datei info.plist.
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).
Beschreibung der Verwendung hinzufügen:
Beispiel:
quelle
Kopieren Sie mit Xcode 11 den Schlüssel
NSLocationAlwaysUsageDescription
und fügen Sie ihn zuInfo
->Custom iOS Target Properties
-> Klicken Sie+
unten links auf dieser Registerkarte und geben Sie als Wert eine Beschreibung wie einThis app requires location access to function properly.
.quelle
"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
quelle
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
quelle
Eine kurze Antwort auf das obige Problem -
NSLocationAlwaysUsageDescription
muss mit der folgenden Beschreibung in der Datei Info.plist aktualisiert werdenquelle
In unserem Fall haben wir
NSLocationWhenInUseUsageDescription
in unserer App verwendet, aber nichtNSLocationAlwaysUsageDescription
.Wenn man die Kommentare hier liest (danke Matt-Oakes), sieht es so aus
NSLocationAlwaysUsageDescription
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
NSLocationAlwaysUsageDescription
zur Info.plist die Warn-E-Mail behoben und kein Verhalten in der App geändert 👍🏻quelle