【问题标题】:"prefs:root=CASTLE" not working to open iCloud Settings in IOS10?“prefs:root=CASTLE”无法在 IOS10 中打开 iCloud 设置?
【发布时间】:2017-03-12 18:01:41
【问题描述】:

在我的应用程序中,我有一个警报视图,可以选择打开 IOS 设置应用程序的 iCloud 部分。这以前适用于 IOS8/9 (Swift 2):

let settingsCloudKitUrl = URL(string:"prefs:root=CASTLE")
if let url = settingsCloudKitUrl {
    UIApplication.sharedApplication().openURL(url)
}

在 IOS10 (Swift 3) 中它不再工作了,因为 openURL() 已被弃用。我将代码更改为以下内容:

let settingsCloudKitUrl = URL(string:"prefs:root=CASTLE")
if let url = settingsCloudKitUrl {
    if #available(iOS 10, *) {
        if UIApplication.shared.canOpenURL(url) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        }
    } else {
        UIApplication.shared.openURL(url)
    }
}

但是上面的代码不适用于IOS10。 UIApplication.shared.canOpenURL(url) 返回 false。我必须进行哪些更改才能使其在 IOS10 中再次正常工作?

【问题讨论】:

  • prefs: 自 iOS 10 起将无法使用。请使用 UIApplicationOpenSettingsURLString
  • UIApplicationOpenSettingsURLString 将在 IOS 设置应用程序中打开我的应用程序部分。那不是我想要的。我需要在“设置”应用中打开 iCloud 部分。
  • prefs 是一个私有 API...Apple 建议您使用 UIApplicationOpenSettingsURLString ....打开应用程序的设置
  • 再次:我不想打开我自己的应用程序的设置!我想打开 iCloud 设置部分。

标签: swift3 settings icloud ios10 openurl


【解决方案1】:

对于 iOS 10 及更高版本,将 prefs:root=CASTLE 更改为 App-Prefs:root=CASTLE 即可正常工作

let settingsCloudKitUrl = URL(string:"App-Prefs:root=CASTLE")
if let url = settingsCloudKitUrl {
    if #available(iOS 10, *) {
        if UIApplication.shared.canOpenURL(url) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        }
    } else {
        UIApplication.shared.openURL(url)
    }
}

【讨论】:

  • App-Prefs:root 之类的网址在 App Store 中被禁止使用并导致应用被拒绝。
  • 不要这样做!!!苹果会拒绝你。很抱歉这里的上限,但我们刚刚被拒绝了
猜你喜欢
  • 1970-01-01
  • 2017-02-08
  • 2017-03-14
  • 2013-12-15
  • 2015-11-07
  • 2013-10-09
  • 2016-05-31
  • 2015-03-09
相关资源
最近更新 更多