iOS 中的访问设置应用程序

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案1】:

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

How to open preferences/settings with iOS 5.1?。 Apple Disables Home Screen Shortcuts For Settings Toggles In iOS 5.1

【讨论】:

【参考方案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 
                    
];

【讨论】:

以上是关于iOS 中的访问设置应用程序的主要内容,如果未能解决你的问题,请参考以下文章

EXPO sdk39 中的应用通知设置访问

忽略 iOS 中的动态类型:可访问性

“无法安装应用程序。测试人员无权访问此应用程序。” TestFlight iOS 应用程序中的错误

如何为 UITextField 中的占位符文本设置可访问性特征?

iOS可以隐藏应用吗

Android系统,如何设置某个应用程序不允许访问网络?