Отказ магазина приложений 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.