Я отправил свое приложение на рассмотрение в App Store Connect. Хотя приложение все еще находится на рассмотрении, я получил электронное письмо, в котором сообщалось, что я должен исправить ошибку. Вот содержание сообщения:
Уважаемый разработчик,
Мы обнаружили одну или несколько проблем с недавней доставкой для вашего приложения XXXXX. Ваша доставка прошла успешно, но вы можете решить следующие проблемы при следующей доставке:
"Отсутствует целевая строка в файле Info.plist. Код вашего приложения ссылается на один или несколько API-интерфейсов, которые обращаются к конфиденциальным данным пользователя. Файл Info.plist приложения должен содержать ключ NSLocationAlwaysUsageDescription с пользовательской строкой назначения, четко и полностью объясняющей, почему вашему приложению требуется Начиная с весны 2019 года, все приложения, представленные в App Store и имеющие доступ к пользовательским данным, должны будут включать строку назначения. Если вы используете внешние библиотеки или SDK, они могут ссылаться на API, для которых требуется строка назначения. Пока ваше приложение Возможно, эти API не будут использоваться, однако целевая строка по-прежнему требуется. Вы можете связаться с разработчиком библиотеки или SDK и попросить, чтобы они выпустили версию своего кода, не содержащую API.
После исправления проблем вы можете использовать Xcode или Application Loader для загрузки нового бинарного файла в iTunes Connect.
С уважением,
Команда App Store
Мое приложение полностью построено с Expo, и я не знаю, как получить доступ и изменить Info.plist.
Любая идея?
источник
Ответы:
Если вы используете Expo, вы можете добавить решение, добавив infoPlist в app.json следующим образом:
Экспо Документы
источник
РЕДАКТИРОВАТЬ Апрель 2019 года : теперь вы должны добавить эти два ключа, как весна 2019 года началась. Обратите внимание, что
NSLocationAlwaysUsageDescription
теперь устарела (начиная с iOS 11) и была заменена наNSLocationAlwaysAndWhenInUseUsageDescription
иNSLocationWhenInUseUsageDescription
. Если вы хотите поддерживать ниже, чем iOS 11, вам придется использовать три значения.Подводя итог, вы должны:
NSLocationAlwaysAndWhenInUseUsageDescription
ANDNSLocationWhenInUseUsageDescription
для iOS 11 и болееNSLocationAlwaysUsageDescription
если хотите поддерживать iOS 10 и менееNSLocationUsageDescription
если вы хотите поддерживать iOS 8 и менее.Вы можете отправить свое приложение, даже если вы получили это сообщение!Я только что столкнулся с той же проблемой вчера, даже если приложение не использует функцию определения местоположения. Это может быть связано с некоторыми фреймворками, включенными в проект, которые имеют эту дополнительную функцию.
Я могу подтвердить, что мое приложение было одобрено даже без ввода
NSLocationAlwaysUsageDescription
иNSLocationWhenInUseUsageDescription
info.plist
Действительно, как Apple заявляет в почте:
Таким образом, единственное, что нужно сделать, это добавить этот ключ (прямо сейчас, чтобы он не был забыт) в вашем проекте, чтобы он был включен в ваше следующее обновление .
Просто добавьте две новые записи в
info.plist
, сNSLocationAlwaysUsageDescription
и вNSLocationWhenInUseUsageDescription
качестве ключей и краткое описание того , почему вы используете их в качестве значения (даже если вы на самом деле не использовать их ...).источник
NSLocationAlwaysUsageDescription
должна быть заменена наNSLocationAlwaysAndWhenInUseUsageDescription
иNSLocationWhenInUseUsageDescription
, а не наNSLocationUsageDescription
(как я ранее писал, извините ...). Я обновил свой ответ, чтобы добавить итог процесса.У меня есть несколько приложений в магазине, и я попытался распространять версию для QA, и то же самое произошло в двух разных приложениях. Я думаю, что это новый критерий для принятия загрузок сборок в Appstore connect.
Решение простое, добавьте следующие строки в файл .plist.
<key>NSLocationAlwaysUsageDescription</key>
<string>custom message</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>custom message</string>
PS: В моем случае я не использовал какую-либо функцию определения местоположения, но я добавил эти строки, чтобы соответствовать рекомендациям Appstore connect. Кстати, после того, как я получил это письмо, я смог протестировать приложение, даже если они сказали, что у него было несколько проблем.
Я надеюсь, что эта работа для вас, ребята.
источник
<key>NSLocationUsageDescription</key>
Это новое требование от Apple, даже если вы не используете местоположение. Если вы хотите добавить разрешения в XCode, ищите «Конфиденциальность - Описание использования местоположения» и «Конфиденциальность - Местоположение, когда используется описание использования» и введите настраиваемую строку для каждого из них.
источник
Для упрощения вы можете добавить эти строки в ваш info.plist. Эти ошибки появляются потому, что начиная с весны 2019 года все приложения, представленные в App Store и имеющие доступ к пользовательским данным, должны будут содержать строку назначения.
Добавьте следующие строки в свой список
источник
NSLocationAlwaysUsageDescription Ваше местоположение требуется для получения вами льгот xyz NSLocationWhenInUseUsageDescription Ваше местоположение требуется для получения льгот xyz для вас
источник
Мы получили одно и то же письмо, и мы совсем не используем CoreLocation. После быстрого поиска мы обнаружили, что Parse SDK может использовать CoreLocation. В электронном письме Apple четко сказано:
Это означает, что в тот момент, когда ваш код или любая другая библиотека или SDK могут использовать CoreLocation, даже если вы его не используете, вам нужно предоставить описание конфиденциальности для «Когда используется» и «Всегда использовать».
Это также что-то новое от Apple, и пока это только предупреждение, но оно будет требоваться начиная с весны 2019 года для новых заявок.
источник
CLLocationManager.requestWhenInUseAuthorization()
будет вызван код . Apple проанализировала каждый код приложения, чтобы выяснить, можно ли вызвать такую функцию. Если он никогда не вызывается, предупреждение не будет отображаться.Эта проблема возникает, потому что вы не включили
для вашего приложения. Я столкнулся с той же проблемой, когда пытался отправить свое приложение в AppStore. После обработки приложения я получил ту же почту. Я только добавил описание, и теперь оно решено.
Надеюсь это поможет.
источник
<key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
Есть следующие случаи:
Apple утверждает, что:
и:
NSLocationUsageDescription
кажется мертвым, единственная ссылка на сайте АЦП: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdfПоэтому, чтобы быть уверенным, используйте первые 3.
источник
Все эти ответы сообщают вам, как соблюдать правила App Store, чтобы избежать предупреждения, но истинное исправление было бы для Expo, чтобы позволить вам отключить их требования SDK для Location Services, если вы на самом деле не используете их - я не уверен, если это возможно.
источник
та же самая проблема в 19 февраля, получила электронное письмо с кучей разрешений, которые я не использую, я предполагаю, что они от плагинов. Apple говорит, что в 19 марта это требование, поэтому я добавляю их в info.plst и загружаю снова.
Это действительно очень глупо.
источник
Я также столкнулся с той же проблемой, но через 27 часов я получил письмо с подтверждением, даже если я ничего не сделал. Так что подождите примерно 24 часа вместо того, чтобы делать весь этот процесс снова.
источник
Я имел
<key>NSLocationWhenInUseUsageDescription </key>
вместо<key>NSLocationWhenInUseUsageDescription</key>
не забудьте удалить конечные пробелы
источник
Пожалуйста, просмотрите письмо, которое вы получили от ** App Store Connect **
Определить недостающий ключ
инструкции
Откройте файл info.plist.
Добавьте и найдите недостающий ключ из предоставленных опций (например, Контакты = Конфиденциальность - Описание использования контактов)
Добавить описание использования:
Пример:
источник
С Xcode 11 скопируйте ключ
NSLocationAlwaysUsageDescription
и добавьте это кInfo
->Custom iOS Target Properties
-> Нажмите+
в левом нижнем углу этой вкладки и в качестве значения вставьте какое-то описание какThis app requires location access to function properly.
.источник
"Отсутствует целевая строка в файле Info.plist. Код вашего приложения ссылается на один или несколько API-интерфейсов, которые обращаются к конфиденциальным данным пользователя. Файл Info.plist приложения должен содержать ключ NSLocationAlwaysUsageDescription с пользовательской строкой назначения, четко и полностью объясняющей, почему вашему приложению требуется Начиная с весны 2019 года, все приложения, представленные в App Store и имеющие доступ к пользовательским данным, должны будут включать строку назначения. Если вы используете внешние библиотеки или SDK, они могут ссылаться на API, для которых требуется строка назначения. Пока ваше приложение эти API-интерфейсы могут не использоваться, однако целевая строка по-прежнему требуется. Вы можете связаться с разработчиком библиотеки или SDK и запросить у них версию своего кода, не содержащую API-интерфейсы.
Откройте info.plist в качестве исходного кода.
Добавьте следующие строки в свой список
источник
Мое приложение также получило это ,, и я ничего не делаю с этим, но оно может работать хорошо, в следующий раз, я думаю, следует добавить такой ключ в plist, просто сделайте некоторое описание
источник
Краткий ответ на вышеуказанную проблему -
NSLocationAlwaysUsageDescription
необходимо обновить следующим описанием в файле Info.plistисточник
В нашем случае, мы использовали
NSLocationWhenInUseUsageDescription
в нашем приложении, но нетNSLocationAlwaysUsageDescription
.Читая из комментариев здесь (спасибо Matt-Oakes), похоже
NSLocationAlwaysUsageDescription
он используется одной из используемых нами структур зависимостей.Запуская наше приложение, оно не показывает фактическое модальное разрешение NSLocationAlwaysUsageDescription, поэтому оно просто обрабатывает это в фоновом режиме.
Таким образом, в итоге, добавление
NSLocationAlwaysUsageDescription
в Info.plist исправило сообщение с предупреждением и не изменило поведение приложения appисточник