iOS开发之应用跳转到设置界面

背景

我们在应用中经常会遇到这样的场景,我们第一次打开应用的时候,会有很多的弹框,包括说会调用你的相机和相册权限啥的,还有网络权限还有通知权限,是否允许,我们有时候会很自然的出于保护的意识,点击那个不允许,那么一旦不允许之后,如果后面用户发现点击某个按钮或者进入某个界面需要用到定位功能,但是已经不允许了,那么我们这个时候要提示用户去进入设置界面设置权限,如何实现呢?

实现

其实很简单,就是只要是应用外的东西,包括外链都是调用openURL
这个接口,请看ViewContorller中的代码:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self addBtn];
}

- (void)addBtn{
    UIButton *btn = [[UIButton alloc]init];
    btn.frame = CGRectMake(0, 0, 200, 50);
    btn.center = self.view.center;
    btn.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:btn];
    [btn setTitle:@"点我跳转设置界面" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(didClickBtn) forControlEvents:UIControlEventTouchUpInside];
}

- (void)didClickBtn{
    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    if([[UIApplication sharedApplication] canOpenURL:url]) {
        NSURL*url =[NSURL URLWithString:UIApplicationOpenSettingsURLString];
        //此处可以做一下版本适配,至于为何要做版本适配,大家应该很清楚
        [[UIApplication sharedApplication] openURL:url];
    }
}

@end

以下是核心代码:

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    if([[UIApplication sharedApplication] canOpenURL:url]) {
        NSURL*url =[NSURL URLWithString:UIApplicationOpenSettingsURLString];
        //此处可以做一下版本适配,至于为何要做版本适配,大家应该很清楚
        [[UIApplication sharedApplication] openURL:url];
    }

跳转到系统设置的当前某个界面

iOS跳转到具体某个应用的设置
代码如下:

[[UIApplication sharedApplication]openURL:[NSURLURLWithString:@"prefs:root=com.app.app"]];

但是运行起来就报错:

canOpenURL: failed for URL: "prefs:root=LOCATION_SERVICES" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"

查阅资料后发现iOS10之前和iOS之后是有区别的:
详情请查阅:iOS10以后跳转系统设置的url

但是即便即便不报错了,还是达不到我们的预期,就是说都是只能跳转到设置界面,但是跳转不到设置里面的应用的界面,原因是苹果不让跳转了,只能跳转到和以下代码一样的效果:

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    if([[UIApplication sharedApplication] canOpenURL:url]) {
        NSURL*url =[NSURL URLWithString:UIApplicationOpenSettingsURLString];
        //此处可以做一下版本适配,至于为何要做版本适配,大家应该很清楚
        [[UIApplication sharedApplication] openURL:url];
    }

以上!

呆萌.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容