Как обработать предупреждение AppStore - Missing Purpose String из-за сторонней библиотеки? - PullRequest
1 голос
/ 26 июня 2019

Я загрузил новую сборку приложения, которое находилось в App Store несколько лет.

Получено следующее электронное письмо от iTunes Connect:

Ваша доставка прошла успешно, но выможет пожелать исправить следующие проблемы в вашей следующей поставке: ITMS-90683: отсутствует строка назначения в Info.plist -

NSLocationAlwaysUsageDescription NSLocationWhenInUseUsageDescription

Приложение не использует местоположение для каких-либоцель.

Это может быть вызвано:

  • в одном из обновленных модулей, добавлено использование Location (admob?)
  • Apple начала выполнять эту проверкусовсем недавно

Я искал в проекте материал Location и CoreLocation, но безрезультатно.Это может быть скомпилировано в двоичном виде, используя его.Но как узнать, что и для какой цели?

Что разработчик должен записать в строку назначения, если какая-то сторонняя библиотека использует это разрешение?

PD: Из того, что я знаю дляAdMob, по крайней мере, на Android, он использует местоположение с давних времен.https://developers.google.com/admob/ios/targeting#location https://support.google.com/admob/answer/6373176?hl=en

PD2: только что нашел это

7.8.1 2016‑05‑11 Добавлена ​​поддержка SDK для автоматического использования местоположенияданные, когда пользователь явно включил разрешения для определения местоположения приложения.

В примечаниях к выпуску: https://developers.google.com/admob/ios/rel-notes

PD3: только что обнаружена проблема на форуме групп Google AdMob: https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/ios/byShbNTrumk

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Что разработчик должен записать в строку назначения, если это какая-то сторонняя библиотека, использующая это разрешение? »

Я бы предложил что-то, что точно отражает какую-то стороннюю библиотекуработает с данными о местоположении, например, «Используется для представления предложений и объявлений, уникальных для вашего текущего местоположения» или «Чтобы наши корпоративные командиры могли отслеживать каждое ваше движение» (шучу ... вроде).

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

Но я бы все же рекомендовал некоторую строку здесь, которая фиксирует все способы использования данных о местоположении.Если позднее вы добавите свои собственные функции служб определения местоположения (что приведет к раскрытию этого раскрытия), это напомнит вам (или будущему разработчику) не только о предполагаемом использовании приложением данных о местоположении, но и о всех способах, которыми данные о местоположении могут бытьиспользуемый.Мы хотим, чтобы наши клиенты могли принимать обоснованные решения о конфиденциальности.И, заполнив эти строки использования сейчас, это минимизирует вероятность того, что мы забудем позже о том, как AdMob (или что-то еще) использует данные.

1 голос
/ 26 июня 2019

Но как узнать, для чего и с какой целью?

Вы можете использовать nm для просмотра символов библиотек / фреймворков, с которыми вы ссылаетесь. Попробуйте

nm <frameworkname> | grep CoreLocation

Чтобы найти все двоичные архивы в папке Pods, запустите

find . -type file | xargs file | grep "Mach-O.*ar archive" | 
  awk '{print $1}' | tr -d : | xargs nm | grep CoreLocation

Как только вы найдете нарушающую библиотеку, вы можете попытаться выяснить, для чего предназначены данные о местоположении, а затем решить, можете ли вы от них избавиться, или продолжить использовать их и добавить необходимые строки разрешений, как объясняет @Rob.

0 голосов
/ 26 июня 2019

Еще одно место, связанное с проблемой: https://github.com/OneSignal/OneSignal-iOS-SDK/issues/368

Попытался удалить модуль OneSignal и загрузить новую сборку. На этот раз все работало без электронной почты от Apple.

...