我的应用中有一个特定的情况,即向UIAlertView
用户提供了两个按钮:Settings
和Ask 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吗?
任何想法都将不胜感激。
答案 0 :(得分:0)
您可以启动“设置应用”的iCloud部分。我已在 iOS 9.3和10.2 上对此进行了测试。
步骤如下:
现在,您可以使用此代码打开您的UIAlertView设置/ iCloud应用程序。
let iCloudURL = URL(string: "App-prefs:root=CASTLE")
if let settingsURL = iCloudURL {
UIApplication.shared.openURL(settingsURL)
}
iOS 10的注意事项。*:openURL
方法实际上已弃用,您应该使用open with completion handler方法:
open(_ url: URL,
options: [String : Any] = [:],
completionHandler completion: ((Bool) -> Void)? = nil)
参考