我最近向itunes connect上传了我的应用程序的新版本。我的应用程序被此笔记拒绝了
您的应用使用“prefs:root =”非公共网址
我几乎可以肯定我在我的应用程序上没有使用任何Url方案我尝试通过终端在我的整个项目中使用grep -R
查找prefs:root不区分大小写以便能够匹配App-Prefs或者其他什么。
我也使用了很多cocoapods库...所以......我的问题是...... 有没有办法找出哪个库正在使用该权限?
xcode
上搜索结果的屏幕截图我项目中使用的框架:
答案 0 :(得分:22)
我面临着与苹果相同的拒绝,并使用以下代码打开应用程序设置,但iOS11上不接受该设置。
let url = URL(string : "prefs:root=")
if UIApplication.shared.canOpenURL(url!) {
UIApplication.shared.openURL(url!)
}
因此,要打开“设置”,我使用了以下代码,并且App得到批准。
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)
}
}
答案 1 :(得分:4)
我遇到了同样的问题,并按以下步骤解决了它:-
步骤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,无后顾之忧:)
答案 2 :(得分:2)
如果您需要查找'prefs:root是:
转到项目的目标->然后选择“信息”->然后选择“ URL类型”,在那里您应该找到URL方案,其值应类似于'prefs'或'prefs:root'
答案 3 :(得分:1)
最后,带有问题的是AmazonFling,因为是使用其他方法安装的,因此未在pod上列出。请参阅论坛帖子:https://forums.developer.amazon.com/questions/167282/apple-app-rejected-because-of-non-public-apis-refe.html
AmazonFling还没有更新(截至2018年4月27日)所以我删除它直到他们更新它。
在AmazonFling 1.3.2中修复,在同一天发布。见https://developer.amazon.com/fr/docs/fling/release-notes.html
答案 4 :(得分:1)
我遇到了同样的问题。 iOS 11不接受“ prefs:root =“ url方案。使用 UIApplicationOpenSettingsURLString 值对其进行修复。
答案 5 :(得分:0)
我们也面临同样的问题,并通过以下方法解决了该问题:
if let url = URL(string:UIApplication.openSettingsURLString)
{
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
答案 6 :(得分:-1)
要找出哪个库正在使用该权限,可以在终端中使用此命令
strings <file path> | grep 'prefs:root'
如果没有Xcode搜索的运气,则可以搜索依赖项编译文件。