App wegen fehlender Nutzungsbeschreibungen abgelehnt (Xcode8)

91

Daher habe ich heute diese E-Mail erhalten, die besagt, dass der neueste Build meiner App von iTunes Connect aufgrund fehlender Verwendungsbeschreibungen abgelehnt wurde. Um genau zu sein:

Diese App versucht, auf datenschutzrelevante Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSContactsUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.

Diese App versucht, auf datenschutzrelevante Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSCalendarsUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.

Diese App versucht, auf datenschutzrelevante Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSPhotoLibraryUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.

Diese App versucht, auf datenschutzrelevante Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSBluetoothPeripheralUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.

Diese App versucht, auf datenschutzrelevante Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSMicrophoneUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.

Diese App versucht, auf datenschutzrelevante Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSMotionUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.

Sobald diese Probleme behoben wurden, können Sie die korrigierte Binärdatei erneut ausliefern.

Ich habe herausgefunden, dass diese mit iOS 10 obligatorisch geworden sind, aber das einzige Problem ist, dass meine App keine Erlaubnis zum Zugriff auf diese anfordert. Ich dachte, die Beschreibung wäre nur obligatorisch, wenn Sie tatsächlich eine Erlaubnis angefordert haben?

Liegt es daran, dass eine meiner Abhängigkeiten (Cocoapods) möglicherweise Code enthält, um diese Berechtigungen anzufordern? Oder sind diese Beschreibungen obligatorisch, auch wenn ich nie nach dem Kalender, den Kontakten usw. des Benutzers frage?

KimHafr
quelle
3
Nach meiner Erfahrung sind diese nur erforderlich, wenn Sie die Berechtigungen anfordern. Vielleicht erledigt dies eine gewisse Abhängigkeit für Sie. Außerdem riechen ALLE diese Berechtigungen faul, besonders wenn Ihre App eine einfache Aufgabenliste ist. Vielleicht geht eine Abhängigkeit Phishing?
Eimantas
Könnten Sie Ihre PodFileund die Liste der Bibliotheken, die Sie verwenden, veröffentlichen (wenn Sie einige externe Cocoapods verwenden)?
Julien Quere
Es war github.com/nickoneill/PermissionScope .. Danke für Ihre Hilfe!
KimHafr
ُ seine erklärte und Show Verwendung: iosdevcenters.blogspot.com/2016/09/…
Saeid
Ich habe genau das gleiche Problem und ich denke, es wird verursacht durch: pod 'ReactNativePermissions' ,: path => '../node_modules/react-native-permissions'
luky

Antworten:

33

Die Beschreibungen sind obligatorisch für alle Inhalte, die Sie oder Frameworks, die Sie verknüpfen, gegen den Versuch des Zugriffs. Die Fehler werden beim Versuch generiert, auf den Inhalt zuzugreifen, wenn keine Verwendungsbeschreibung angegeben wurde. Wenn Sie diese Fehler erhalten, muss Ihre App sie anfordern. Sie sollten herausfinden, warum Ihre App oder ihre Frameworks diese benötigen, und der info.plist Ihrer App entsprechende Verwendungsbeschreibungen hinzufügen.

Oder idealerweise, wenn Sie keinen Zugriff benötigen, prüfen Sie, ob es eine Möglichkeit gibt, ihn nicht anzufordern (oder verwenden Sie Frameworks, die dies unnötig tun).

Matthew Seaman
quelle
11
Ich konnte mir für mein ganzes Leben nicht vorstellen, dass ich eine Bibliothek hinzufügen würde, die all diese Berechtigungen anfordert. Aber es war so offensichtlich, als ich es fand: github.com/nickoneill/PermissionScope
KimHafr
1
Ja, ein solches Framework ist möglicherweise keine gute Idee, da Ihre App dadurch weit mehr Berechtigungen deklariert, als sie benötigt.
Matthew Seaman
3
Ich denke, dies ist eher eine Funktion als ein Fehler. ITunes Connect erkennt, dass irgendwo in Ihrer App möglicherweise jemand Berechtigungen anfordert. In diesem Fall müssen Sie für all diese Verwendungsbeschreibungen ausfüllen, falls Sie tatsächlich einen Teil des Codes in permissionscope aufrufen können. Ich mag das Framework auch und bin nicht bereit, es zu ersetzen. Also habe ich einen falschen Text ausgefüllt und die App wurde genehmigt. Ich habe es im AppStore eingereicht, also hoffentlich ist es in
Ordnung
15
Benötigen Sie eine Möglichkeit, um festzustellen, welches Framework diese Berechtigung anfordert?
Neobie
5
Neobie - haben Sie herausgefunden, wie Sie die Frameworks erkennen können, die die Berechtigungen anfordern?
Nitesh
140

iOS 10 muss die Berechtigung in info.plist hinzufügen. Überprüfen Sie einfach diesen BLOG: - settings-in-ios-10 Sie haben alle Ahnung.

Fügen Sie die Berechtigung in der Datei info.plist in Ihrem Fehlerprotokoll hinzu .

Hinweis: Geben Sie den richtigen Grund für die Berechtigung in den Zeichenfolgenwert ein, andernfalls lehnt Apple die App erneut ab.

NSCameraUsageDescription

<key>NSCameraUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSContactsUsageDescription

<key>NSContactsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSPhotoLibraryUsageDescription

<key>NSPhotoLibraryUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSBluetoothPeripheralUsageDescription

<key>NSBluetoothPeripheralUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMicrophoneUsageDescription

<key>NSMicrophoneUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMotionUsageDescription

<key>NSMotionUsageDescription</key>
    <string>$(PRODUCT_NAME) motion use.</string>

NSLocationAlwaysUsageDescription

<key>NSLocationAlwaysUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationUsageDescription

<key>NSLocationUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationWhenInUseUsageDescription

<key>NSLocationWhenInUseUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSRemindersUsageDescription

<key>NSRemindersUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSiriUsageDescription

<key>NSSiriUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSVideoSubscriberAccountUsageDescription

<key>NSVideoSubscriberAccountUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSpeechRecognitionUsageDescription

<key>NSSpeechRecognitionUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSCalendarsUsageDescription

<key>NSCalendarsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

Geben Sie hier die Bildbeschreibung ein

Mitul Marsoniya
quelle
Sollte es nicht "$ {PRODUCT_NAME}" anstelle von "$ (PRODUCT_NAME)" sein? "{}" anstatt "()".
Backslash-f
@ backslash-f, Bitte überprüfen Sie die vorhandene Plist-Datei in einem neuen Projekt und es sollte sein $(PRODUCT_NAME). Sie können die Standardeigenschaft wie Bundle namein der plist-Datei sehen.
Jayesh Thanki
1
Bitte beachten Sie, dass eine allgemeine Beschreibung wie diese Sie nicht mehr durch die App Store-Genehmigung führt. Wir wurden nur zweimal für ähnliche Beschreibungen dinged. Sie müssen den tatsächlichen Gebrauch für einen Menschen beschreiben
O'Rooney
9

Sie können in Ihre info.plist wie folgt hinzufügen:

<key>NSCalendarsUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>Explain the reasons for accessing...</string>

etc.

Hoffnung wird jemandem helfen ...

mgyky
quelle
6

Ich hatte das gleiche Problem, und es scheint, dass die Verwendungsbeschreibungen erforderlich sind , wenn ein Framework, mit dem Sie verknüpfen, Code enthält, der diese Berechtigung anfordert (auch wenn Ihre App sie nie anfordert). Laut meinem Test werden sie jedoch nicht in der Berechtigungsliste Ihrer App angezeigt, wenn Sie sie nicht anfordern.

Dielson Sales
quelle
3

Kalender: Schlüssel: Datenschutz - Kalender Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) Kalenderereignisse

Erinnerung: Schlüssel: Datenschutz - Erinnerungen Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) Erinnerung verwenden

Kontakt : Schlüssel: Datenschutz - Kontakte Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) Kontakt verwenden

Foto: Schlüssel: Datenschutz - Verwendung der
Fotobibliothek Beschreibung Wert: $ (PRODUCT_NAME) Fotonutzung

Bluetooth-Freigabe: Schlüssel: Datenschutz - Verwendung der Bluetooth-Peripheriegeräte Beschreibung
Wert: $ (PRODUCT_NAME) Verwendung der Bluetooth-Peripheriegeräte

Mikrofon: Schlüssel: Datenschutz - Verwendung des Mikrofons Beschreibung
Wert: $ (PRODUCT_NAME) Verwendung des Mikrofons

Kamera: Schlüssel: Datenschutz -
Kameranutzung Beschreibung Wert: $ (PRODUCT_NAME) Kameranutzung

Standort: Schlüssel: Datenschutz - Standort Immer Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) Standortverwendung

Schlüssel: Datenschutz - Standort bei Verwendung Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) Standortverwendung

Heath: Key: Privacy - Health Share-Nutzung Beschreibung
Wert: $ (PRODUCT_NAME) Heath Share- Nutzung

Schlüssel: Datenschutz - Verwendung des Gesundheitsupdates Beschreibung
Wert: $ (PRODUCT_NAME) Verwendung des Gesundheitsupdates

HomeKit: Schlüssel: Datenschutz - HomeKit Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) Verwendung des Home Kits

Medienbibliothek: Schlüssel: Datenschutz - Verwendung der Medienbibliothek Beschreibung
Wert: Verwendung der Medienbibliothek $ (PRODUCT_NAME)

Bewegung: Schlüssel: Datenschutz - Bewegungsnutzung Beschreibung
Wert: $ (PRODUCT_NAME) Bewegungsnutzung

Spracherkennung: Schlüssel: Datenschutz - Spracherkennung Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) Sprachverwendung

SiriKit: Schlüssel: Datenschutz - Siri Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) siri use

TV-Anbieter: Schlüssel: Datenschutz - TV-Anbieter Verwendung Beschreibung
Wert: $ (PRODUCT_NAME) tvProvider-Verwendung

Trinadh Koya
quelle
0

Für alle, die sich fragen, warum Ihre App plötzlich überhaupt über all diese Berechtigungseinstellungen verfügt, die möglicherweise auf CocoaPods oder Karthago zurückzuführen sind - sie setzen all diese Berechtigungen in Verbindung. Ich habe gerade meine App aktualisiert, um Cordova-Plugin-Firebasex zu verwenden, das eine umfangreiche Installation von Cocoapods (und Abhängigkeiten) enthält. Sie können diese Berechtigungen deaktivieren, BEVOR Sie Cocoapods in Ihrem Projekt installieren, indem Sie eine PermissionsConfiguration.xcconfig in das Stammverzeichnis Ihres Projekts einfügen. Weitere Informationen hierzu finden Sie hier: https://cocoapods.org/pods/Permission#installation

Dies alles überraschte mich, als die neue Version meiner App abgelehnt wurde und 7 Berechtigungsschlüssel / -zeichenfolgen in der Datei Info.plist fehlten. Ich musste mich dann in mein Projekt vertiefen, um herauszufinden, was dies verursacht hat, da meine App keine dieser Berechtigungen benötigt oder verwendet (noch nie).

Es mag existieren, aber im Moment kann ich keine Möglichkeit finden, Berechtigungen nach der Pods-Integration zu entfernen. Ich muss mich darum kümmern, wie das geht, ohne mein Projekt neu zu starten.

rolinger
quelle