iOS 9:深度链接到iCloud设置

6
这是我的问题:我正在开发一个使用CloudKit的应用程序。如果用户在设备上没有登录iCloud,我需要处理这种情况。我想将他们发送到iCloud设置,并提醒他们需要打开iCloud数据以便我的应用程序使用。我正在使用NSFileManager.defaultManager().ubiquityIdentityToken决定是否需要打开用户的iCloud设置。问题在于,我不知道如何做。设备的iCloud设置URL是什么?我已经进行了大量研究,知道我不想要UIApplicationOpenSettingsURLString。这会打开应用程序的设置而不是设备的设置。iOS 9的新安全功能使这一切变得更加困难,但我认为我已经正确设置了它们。

enter image description here


1
看起来这里已经有了一个答案(这是不可能的)https://dev59.com/vV8e5IYBdhLWcg3wLYHt - inorganik
除了您自己应用程序的设置之外,您无法打开设置应用程序。而 LSApplicationQueriesSchemes 完全与此无关。 - rmaddy
我曾经认为 LSApplicationQueriesSchemes 是在iOS 9中白名单URL的一种方式,这些URL由于安全原因默认被阻止。 - Henry OM
这是您希望在调用UIApplication canOpenURL:时使用的URL方案列表。那与您的问题有什么关系? - rmaddy
我以为我可以用这个打开设置。 - Henry OM
1个回答

1
你可以启动设置应用程序的iCloud部分。我已在iOS 9.3和10.2上进行了测试。
步骤如下:
1.从项目设置/信息/URL类型中添加新的URL Scheme到你的应用程序中。

enter image description here

  1. Now, you can open Settings/iCloud app with this code.

    let iCloudURL = URL(string: "App-prefs:root=CASTLE")
    if let settingsURL = iCloudURL {
         UIApplication.shared.openURL(settingsURL)
    }
    
注意:对于iOS 10.*版本,openURL方法已经被弃用,您应该使用带有完成处理程序的打开方法:
open(_ url: URL, 
     options: [String : Any] = [:], 
     completionHandler completion: ((Bool) -> Void)? = nil)

参考资料


1
我刚刚因为使用了 App-prefs:root 被拒绝了应用。"你的应用程序使用了“prefs:root=”非公开的URL方案,这是一个私有实体。在App Store上不允许使用非公开API,因为这可能会导致用户体验差,如果这些API发生变化的话。" - Brad G.
当我编写 let iCloudURL = URL(string: "App-prefs:root=CASTLE") 时,它会将我带到通用设置窗口 :/ - pistoleta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接