ios 应用商店拒绝 - 您的应用使用“prefs:root=”非公共 URL 方案
Posted
技术标签:
【中文标题】ios 应用商店拒绝 - 您的应用使用“prefs:root=”非公共 URL 方案【英文标题】:ios app store rejection - Your app uses the "prefs:root=" non-public URL scheme 【发布时间】:2018-04-26 10:23:22 【问题描述】:我最近将我的应用程序的新版本上传到了 iTunes Connect。我的应用被这个注释拒绝了
您的应用使用“prefs:root=" 非公共 URL 方案
我几乎可以肯定我没有在我的应用程序上使用任何 Url 方案我尝试通过终端在我的整个项目中使用grep -R
查找首选项:root(不区分大小写,也能够匹配 App-Prefs 或其他.
我也使用了很多 cocoapods 库,所以......我的问题是...... 有没有办法找出哪个库正在使用该权限?
xcode 上的搜索结果截图
我的项目中使用的框架:
AmazonFling 来自 CocoaPods 的许多其他人(因为不相关而未列出:请参阅我的回答)【问题讨论】:
我也遇到过这个问题你想检查是否有任何“App-Prefs:root=" url 是通过 app 打开的?如果是,那么这是主要原因,因为这些不是公共 URL 方案 用于通过 Xcode Search 面板搜索整个项目搜索 我需要检查我在我的应用程序上使用它的位置,因为我找不到它,而苹果确实可以 UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=General&path=Keyboard")!) 只有这个 API 被允许,其他的都不允许。 检查整个代码,即使 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)
【讨论】:
由于prefs:root=
问题,我也被拒绝了。 ***.com/a/51093121/419348【参考方案2】:
我遇到了同样的问题,我解决了如下:-
第 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,不用担心 :)
【讨论】:
【参考方案3】:我遇到了同样的问题。 iOS 11 不接受 "prefs:root=" url 方案。使用 UIApplicationOpenSettingsURLString 值修复它。
Reference Image
【讨论】:
及时了解指南是避免此类问题的最佳方式。【参考方案4】:如果你需要用'prefs:root 查找是:
转到您项目的目标 -> 然后是 Info -> 然后是 URL Types,在那里您应该会找到具有“prefs”或“prefs:root”等值的 URL 方案
【讨论】:
App Store 将拒绝使用 pres:root 指南 2.5.1 - 性能 - 软件要求的应用程序您的应用程序使用“prefs:root=”非公共 URL 方案,这是一个私有实体。 App Store 不允许使用非公共 API,因为如果这些 API 发生变化,可能会导致用户体验不佳。 在未来提交此应用程序时继续使用或隐藏非公共 API 可能会导致终止您的 Apple Developer 帐户,以及从 App Store 中删除所有相关应用。【参考方案5】:最后,有问题的是 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
【讨论】:
根据其他AmazonFling API用户的说法,Apple的错误信息实际上是“”您的应用使用或引用了以下非公共API:com.apple.springboard.lockcomplete”我>”。这个可以通过grep -R 'com.apple.springboard.lockcomplete'
找到
Apple 稍后会告诉我有关跳板的信息。但感谢您的评论!【参考方案6】:
我们也遇到了同样的问题并通过以下方式解决:
if let url = URL(string:UIApplication.openSettingsURLString)
UIApplication.shared.open(url, options: [:], completionHandler: nil)
【讨论】:
【参考方案7】:要找出哪个库正在使用该权限,您可以在终端中使用此命令
strings <file path> | grep 'prefs:root'
如果在 Xcode 中搜索不成功,则在依赖项编译文件中搜索。
【讨论】:
以上是关于ios 应用商店拒绝 - 您的应用使用“prefs:root=”非公共 URL 方案的主要内容,如果未能解决你的问题,请参考以下文章
iOS 应用商店 NSBluetoothAlwaysUsageDescription - 拒绝
iOS应用程序因苹果应用商店而被拒绝,因为UIWebview
iOS 构建问题 App Store prefs:root=