Ошибка Appstore connect: Отсутствует целая строка в файле Info.plist

Я отправил свое приложение на рассмотрение в App Store Connect. Хотя приложение все еще находится на рассмотрении, я получил электронное письмо, в котором сообщалось, что я должен исправить ошибку. Вот содержание сообщения:

Dear Developer,

Мы обнаружили одну или несколько проблем с недавней доставкой для вашего приложения ХХХХХ. Ваша доставка прошла успешно, но вы можете исправить следующие проблемы при следующей доставке:

"Отсутствует целевая строка в файле Info.plist. Код вашего приложения ссылается на один или несколько API, которые получают доступ к конфиденциальным данным пользователя. Файл Info.plist приложения должен содержать NSLocationAlwaysUsageDescription ключ с пользовательской целью Строка, четко и полностью объясняющая, почему вашему приложению нужны данные. Начиная с весны 2019 года все приложения, представленные в App Store, имеют доступ к пользовательские данные должны будут включать целевую строку. Если вы используя внешние библиотеки или SDK, они могут ссылаться на API, которые Требуется строка назначения. Хотя ваше приложение может не использовать эти API, Строка назначения все еще требуется. Вы можете связаться с разработчиком библиотека или SDK и попросить, чтобы они выпустили версию своего кода это не содержит API.

После того, как вы исправили проблемы, вы можете использовать Xcode или Application Загрузчик для загрузки нового двоичного файла в iTunes Connect.

Best regards,

Команда App Store

Мое приложение полностью построено с Expo, и я не знаю, как получить доступ и изменить Info.plist.

Любая идея?

Ответ 1

Если вы используете Expo, вы можете добавить решение, добавив infoPlist в app.json так:

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

Экспо-Документы

Ответ 2

РЕДАКТИРОВАТЬ Апрель 2019 года: теперь вы должны добавить эти два ключа, как spring 2019 года началась. Обратите внимание, что NSLocationAlwaysUsageDescription устарела (начиная с iOS 11) и была заменена NSLocationAlwaysAndWhenInUseUsageDescription и NSLocationWhenInUseUsageDescription. Если вы хотите поддерживать ниже, чем iOS 11, вам придется использовать три значения.

Подводя итог, вы должны:

  • Добавить NSLocationAlwaysAndWhenInUseUsageDescription И NSLocationWhenInUseUsageDescription для iOS 11 и более
  • И добавьте NSLocationAlwaysUsageDescription если вы хотите поддерживать iOS 10 и менее
  • И, наконец, вы можете добавить NSLocationUsageDescription если хотите поддерживать iOS 8 и менее.


Вы можете отправить свое приложение, даже если вы получили это сообщение!

Я только что столкнулся с той же проблемой вчера, даже если приложение не использует функцию определения местоположения. Это может быть связано с некоторыми фреймворками, включенными в проект, которые имеют эту дополнительную функцию.

Я могу подтвердить, что мое приложение было одобрено даже без NSLocationAlwaysUsageDescription и NSLocationWhenInUseUsageDescription в info.plist

Действительно, как Apple заявляет в почте:

Начиная с весны 2019 года, все приложения, представленные в App Store и имеющие доступ к пользовательским данным, должны будут содержать строку назначения.

Таким образом, единственное, что нужно сделать, это добавить этот ключ (прямо сейчас лучше, чтобы вы не забыли) в свой проект, чтобы он был включен в ваше следующее обновление.

Просто добавьте две новые записи в ваш info.plist с NSLocationAlwaysUsageDescription и NSLocationWhenInUseUsageDescription качестве ключей и кратким описанием того, почему вы используете их в качестве значения (даже если вы их не используете...).

Ответ 3

У меня есть некоторые приложения в магазине, и я попытался распространять версию для QA, и то же самое произошло в двух разных приложениях. Я думаю, что это новый критерий для приема загрузок сборки в Appstore connect.

Решение прост, добавьте следующие строки в файл.plist.

<key>NSLocationAlwaysUsageDescription</key>
<string>custom message</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>custom message</string>

PS: В моем случае не использовалась какая-либо особенность местоположения, но я добавил эти строки, чтобы соответствовать правилам подключения Appstore. Btw после получения этого письма, я мог бы проверить приложение, даже когда они сказали, что у него возникли некоторые проблемы.

Надеюсь, эта работа для вас, ребята.

Ответ 4

Это новое требование от Apple, даже если вы не используете местоположение. Если вы хотите добавить разрешения в XCode, ищите "Конфиденциальность - Описание использования местоположения" и "Конфиденциальность - Местоположение, когда используется описание использования" и введите настраиваемую строку для каждого из них.

enter image description here

Ответ 5

## Используйте этот ключ в файле info.plist

NSLocationAlwaysUsageDescription Ваше местоположение требуется для преимуществ xyz для вас NSLocationWhenInUseUsageDescription Ваше местоположение требуется для преимуществ xyz для вас

Ответ 6

Для упрощения вы можете добавить эти строки в ваш info.plist. Эти ошибки появляются потому, что начиная с весны 2019 года все приложения, представленные в App Store и имеющие доступ к пользовательским данным, должны будут содержать строку назначения.

  1. Откройте info.plist в качестве исходного кода.
  2. Добавьте следующие строки в свой список

    <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>
    

Ответ 7

Мы получили одно и то же электронное письмо, и мы вообще не используем CoreLocation. После быстрого поиска мы обнаружили, что Parse SDK может использовать CoreLocation. В электронной почте Apple они четко говорят:

Если вы используете внешние библиотеки или SDK, они могут ссылаться на API, которые требуют строку назначения.

Это означает, что в тот момент, когда ваш код или любая другая библиотека или SDK могут использовать CoreLocation, даже если вы им не пользуетесь, вам необходимо предоставить описание конфиденциальности для "Когда используется" и "Всегда использовать".

Это также что-то новое от Apple, и пока это только предупреждение, но оно будет требоваться начиная с весны 2019 года для новых заявок.

Ответ 8

Есть следующие случаи:

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

Apple заявляет по адресу:

Добавьте клавишу NSLocationWhenInUseUsageDescription и клавишу NSLocationAlwaysAndWhenInUseUsageDescription в файл Info.plist.

и:

Если ваше приложение поддерживает iOS 10 и более ранние версии, добавьте NSLocationAlwaysUsage

NSLocationUsageDescription кажется мертвым, единственная ссылка на сайте АЦП: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

Поэтому, чтобы быть уверенным, используйте первые 3.

Ответ 9

Эта проблема возникает, потому что вы не включили

 <NSLocationAlwaysUsageDescription>

для вашего приложения. Я столкнулся с той же проблемой, когда пытался отправить приложение в AppStore. После того, как приложение было обработано, я получил ту же почту. Я просто добавил описание и теперь его разрешил.

Надеюсь это поможет.

Ответ 10

Все эти ответы говорят вам, как соблюдать правила в App Store, чтобы избежать предупреждения, но истинное исправление было бы для Экспо, чтобы вы могли отключить их требования к SDK для служб местоположения, если вы на самом деле их не используете. Я не уверен, что это возможный.

Ответ 11

та же самая проблема в 19 февраля, получила электронное письмо с кучей разрешений, которые я не использую, я предполагаю, что они от плагинов. Apple говорит, что 19 марта это требование, поэтому я добавляю их в info.plst и загружаю снова.

Это действительно очень глупо.

Ответ 12

Я также сталкиваюсь с той же проблемой, но через 27 часов я получил письмо с подтверждением, даже если я ничего не сделал. Так что подождите примерно 24 часа вместо того, чтобы делать весь этот процесс снова.

Ответ 13

Пожалуйста, просмотрите письмо, которое вы получили от ** App Store Connect **

Определить недостающий ключ enter image description here

инструкции

  1. Откройте файл info.plist.

  2. Добавьте и найдите недостающий ключ из предоставленных опций (например, Контакты= Конфиденциальность - Описание использования контактов)

  3. Добавить описание использования:

Для $ (PRODUCT_NAME) контактам необходим доступ к "Приведите причину здесь".

Пример:

Ответ 14

Мое приложение также получило это, и я ничего не делаю, но он может работать хорошо, в следующий раз, я думаю, должен добавить такой ключ в plist, просто сделайте некоторое описание

Ответ 15

У меня было <key>NSLocationWhenInUseUsageDescription </key> вместо <key>NSLocationWhenInUseUsageDescription</key>

не забудьте удалить конечные пробелы

Ответ 16

С Xcode 11 скопируйте ключ NSLocationAlwaysUsageDescription и добавьте его в InfoCustom iOS Target Properties → Нажмите + в левом нижнем углу этой вкладки и в качестве значения вставьте какое-то описание, например This app requires location access to function properly..