Отказ магазина приложений ios - ваше приложение использует схему непубличных URL-адресов "prefs: root ="

Недавно я загрузил новую версию своего приложения в itunes connect. Мое приложение было отклонено с этой запиской

В вашем приложении используется схема непубличных URL-адресов "prefs: root ="

Я почти уверен, что не использую какую-либо схему Url в своем приложении. Я попытался найти prefs: root, используя grep -R во всем моем проекте через терминал (без grep -R регистра, чтобы иметь возможность также соответствовать App-Prefs или тому подобное.

Я также использую много библиотек cocoapods, поэтому... мой вопрос... Есть ли способ узнать, какая библиотека использует это разрешение?

Снимок экрана результатов поиска по xcode

enter image description here

Рамки, используемые в моем проекте:

  • AmazonFling
  • многие другие из CocoaPods (не указаны потому, что неактуальны: см. мой ответ)

Ответ 1

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

let url = URL(string : "prefs:root=")
if UIApplication.shared.canOpenURL(url!) {
    UIApplication.shared.openURL(url!)
 }

Итак, чтобы открыть "Настройки", я использовал приведенный ниже код, и приложение было одобрено.

guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
    return
  }
  if UIApplication.shared.canOpenURL(settingsUrl)  {
    if #available(iOS 10.0, *) {
      UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
      })
    }
    else  {
      UIApplication.shared.openURL(settingsUrl)
    }
  }

Ответ 2

если вам нужно найти "perfs: root:

Перейдите в свой целевой проект → then Info → then URL Types, там вы должны найти Схемы URL со значением, как "perfs" или "perfs: root",

Ответ 3

В конце один из них с проблемами был AmazonFling, который не был указан на контейнерах, потому что был установлен с использованием другого метода. См. Сообщение на форуме об этом: https://forums.developer.amazon.com/questions/167282/apple-app-rejected-because-of-non-public-apis-refe.html

У AmazonFling пока нет обновления (по состоянию на 27 апреля 2018 года), поэтому я удалил его, пока не обновит его.


Исправлено в AmazonFling 1.3.2, выпущенном в тот же день. См. Https://developer.amazon.com/fr/docs/fling/release-notes.html.

Ответ 4

Я столкнулся с той же проблемой. Схема URL "prefs: root =" не принимается iOS 11. Использование исправленного значения UIApplicationOpenSettingsURLString.

Эталонное изображение

Ответ 5

У меня была та же проблема, и я решил ее следующим образом:

Шаг 1: - Ищите Prefs: root в вашем приложении, тогда вы найдете что-то следующее: -

 if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION") {
 // If general location settings are disabled then open general location settings
    UIApplication.shared.openURL(url)
 }

Шаг 2: - Измените приведенный выше фрагмент кода следующим: -

 if let url = URL(string:UIApplicationOpenSettingsURLString) 
 {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
 }

Теперь пересоберите свое приложение и отправьте его в App Store без забот :)

Ответ 6

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

strings <file path> | grep 'prefs:root'

искать в зависимостях скомпилированные файлы, если вам не повезло с поиском в Xcode.