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 中的访问设置应用程序的主要内容,如果未能解决你的问题,请参考以下文章
“无法安装应用程序。测试人员无权访问此应用程序。” TestFlight iOS 应用程序中的错误