【问题标题】:Access Settings app in iOSiOS 中的访问设置应用程序
【发布时间】:2012-03-28 16:33:34
【问题描述】:

是否有机会通过单击按钮在 iOS 中显示 settings.app?它应该适用于 iOS 5.1,因此“prefs:root...” url 不是选项。

你知道如何解决这个问题吗?

【问题讨论】:

    标签: iphone ios xcode ios5 settings


    【解决方案1】:

    您无法在 iOS 5.1 上执行此操作。很可能 Apple 有意删除了该功能(您会收到“请输入有效的 URL”,而 Twitter 仍然可以调用设置)。请参考:

    【讨论】:

      【解决方案2】:

      如果 iOS6 检测到您是否在未设置这些帐户的情况下尝试发布到 FB 或 Twitter,则它会显示直接从“AlertView”(自动显示)打开设置应用程序的选项。

      I have elaborated this over here

      【讨论】:

        【解决方案3】:

        我知道这个问题具体是关于 5.1,但如果其他人感兴趣:

        从 iOS 8 开始,可以将用户从您的应用程序直接带到“设置”应用程序。它们将深入链接到您应用的特定设置页面,但它们可以返回到顶级设置屏幕。

        更新:

        感谢 Pavel 的评论,我简化了 if 语句并避免了 iOS 7 上的 EXC_BAD_ACCESS。

        更新 2:

        如果您的部署目标设置为 8.0 或更高版本,Xcode 6.3 会给您以下警告:

        Comparison of address of 'UIApplicationOpenSettingsURLString' not equal to a null pointer is always true
        

        这是因为该功能从 8.0 开始可用,因此该指针永远不会是 NULL。如果您的部署目标是 8.0+,只需删除下面的 if 语句即可。

        if (&UIApplicationOpenSettingsURLString != NULL) {
            NSURL *appSettings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
            [[UIApplication sharedApplication] openURL:appSettings];
        } 
        

        【讨论】:

        • UIApplicationOpenSettingsURLString 在 iOS7 上导致 EXC_BAD_ACCESS。这样更好: if (&UIApplicationOpenSettingsURLString)
        【解决方案4】:

        在 iOS 8 上,Apple 让我们可以直接从我们的应用程序转到应用程序设置

        您可以应用此代码:

        - (IBAction)openSettings:(id)sender {
            BOOL canOpenSettings = (UIApplicationOpenSettingsURLString != NULL);
            if (canOpenSettings) {
                NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
                [[UIApplication sharedApplication] openURL:url];
            }
        }
        

        【讨论】:

          【解决方案5】:

          openURL: 方法现已弃用。


          iOS 10 +

          打开设置 URL(或任何 URL)的正确方法如下:

          NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
          
          [[UIApplication sharedApplication] openURL:settingsURL options:@{} completionHandler:^(BOOL success) {
          
              // Do anything here 
                              
          }];
          

          【讨论】:

            猜你喜欢
            • 2014-11-23
            • 2014-08-05
            • 1970-01-01
            • 1970-01-01
            • 2010-09-05
            • 2016-11-21
            • 1970-01-01
            • 2010-11-07
            • 2015-08-07
            相关资源
            最近更新 更多