无夜之*_*之星辰 5 xcode objective-c ios
在我问这个问题之前,我试过了:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Privacy&path=LOCATION"]];它在iOS8和iOS9上运行良好,但在iOS10上没有任何变化.[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];它在iOS8和iOS9上也能正常工作.但是,在iOS10上,当应用程序跳转到系统设置时,系统设置立即退出.[[UIApplication sharedApplication]openURL:url options:@{}completionHandler:nil];它在iOS8和iOS9上崩溃,同样,在iOS10上立即退出.问题是我们的应用程序可以跳转到iOS10上的系统设置吗?如果是的话.[[UIApplication sharedApplication]openURL:url options:@{}completionHandler:nil];如何options?这意味着什么?我们必须为此代码options?
一段时间以来,只允许应用在设置应用中打开自己的设置窗格.过去曾有过各种设置网址,但最近Apple拒绝使用这些网址的应用.
您可以打开自己的应用程序设置:
if let url = URL(string:UIApplicationOpenSettingsURLString) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Run Code Online (Sandbox Code Playgroud)
或者在Objective-C中
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if (url != nil) {
[[UIApplication sharedApplication] openURL:url options:[NSDictionary new] completionHandler:nil];
}
Run Code Online (Sandbox Code Playgroud)
如果您的目标是早于10的iOS版本,那么您可能更愿意使用旧的,已弃用但功能正常的方法:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if (url != nil) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
[[UIApplication sharedApplication] openURL:url];
#pragma clang diagnostic pop
}
Run Code Online (Sandbox Code Playgroud)
别忘了添加URL方案: -
转到项目设置 - >信息 - > URL类型 - >添加新URL方案 - > URL方案= prefs
之后使用此网址: -
let settingUrl = URL(string: "App-Prefs:root=Privacy&path=LOCATION")
Run Code Online (Sandbox Code Playgroud)
并打开使用: -
if #available(iOS 10.0, *) {
UIApplication.shared.open(settingUrl) {
(isOpen:Bool) in
if !isOpen {
debugPrint("Error opening:\(settingUrl.absoluteString)")
// show error
}
}
}else{
if UIApplication.shared.canOpenURL(settingUrl) {
UIApplication.shared.open(settingUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}
Run Code Online (Sandbox Code Playgroud)
享受:) ..这对我有用.
注意:我使用这种方法已经很长时间了,一切进展顺利,但是今天(2018-9-14),我被拒绝了。
这是我以前的回答,请不要永远使用此方法:
CGFloat systemVersion = [[UIDevice currentDevice].systemVersion floatValue];
if (systemVersion < 10) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=Privacy&path=LOCATION"]];
}else{
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"App-Prefs:root=Privacy&path=LOCATION"]
options:[NSDictionary dictionary]
completionHandler:nil];
}
Run Code Online (Sandbox Code Playgroud)
现在,我使用这种方式:
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:[NSDictionary dictionary] completionHandler:nil];
} else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7462 次 |
| 最近记录: |