通过UIAlertView调用iOS设置应用程序的iCloud部分

时间:2014-08-14 13:48:28

标签: ios settings uialertview

我的应用中有一个特定的情况,即向UIAlertView用户提供了两个按钮:SettingsAsk me Later。稍后询问我只是一个cancel,但我想要设置:

1)打开iOS设置应用的iCloud部分 2)如果不可能,只需打开设置。

这是一款仅限iOS 7的应用程序,我发现很多文章说这已经停止在iOS 5之后得到支持了。如果Authy应用程序没有提供相同的功能,我会完全接受。

在他们的应用程序中,如下面的屏幕截图所示,您可以进入设置的蓝牙部分并且可以正常工作。我相信其他应用也会这样做。

我的代码目前无法执行任何操作:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex != [alertView cancelButtonIndex])
    {
        NSLog(@"Settings selected");

        NSURL*url=[NSURL URLWithString:@"prefs:root=General&path=Bluetooth"];
        [[UIApplication sharedApplication] openURL:url];

    }

基于此Stack Overflow帖子(iOS UIAlertView button to go to Setting App)(虽然已经过时),我尝试了大多数变体,但我无法打开Settings.app。点击它时它什么都不做。

如果无法进入iCloud部分,我不介意只是将用户发送到Settings.app吗?

任何想法都将不胜感激。

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以启动“设置应用”的iCloud部分。我已在 iOS 9.3和10.2 上对此进行了测试。

步骤如下:

  1. 从“项目设置/信息/ URL类型”中为您的应用添加新的URL方案。
  2. enter image description here

    1. 现在,您可以使用此代码打开您的UIAlertView设置/ iCloud应用程序。

      let iCloudURL = URL(string: "App-prefs:root=CASTLE")
      if let settingsURL = iCloudURL {
           UIApplication.shared.openURL(settingsURL)
      }
      
    2. iOS 10的注意事项。*:openURL方法实际上已弃用,您应该使用open with completion handler方法:

      open(_ url: URL, 
           options: [String : Any] = [:], 
           completionHandler completion: ((Bool) -> Void)? = nil)
      

      参考