ios应用商店拒绝 - 您的应用使用“prefs:root =”非公共网址计划

时间:2018-04-26 10:23:23

标签: ios xcode cocoapods itunesconnect

我最近向itunes connect上传了我的应用程序的新版本。我的应用程序被此笔记拒绝了

  

您的应用使用“prefs:root =”非公共网址

我几乎可以肯定我在我的应用程序上没有使用任何Url方案我尝试通过终端在我的整个项目中使用grep -R查找prefs:root不区分大小写以便能够匹配App-Prefs或者其他什么。

我也使用了很多cocoapods库...所以......我的问题是...... 有没有办法找出哪个库正在使用该权限?

xcode

上搜索结果的屏幕截图

enter image description here

我项目中使用的框架:

  • AmazonFling
  • 来自CocoaPods的许多其他人(未列出,因为不相关:见我的回答)

7 个答案:

答案 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 值对其进行修复。

Reference Image

答案 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搜索的运气,则可以搜索依赖项编译文件。