iOS 应用内跳转到设置页

我参加了CSDN博客之星的的评选, 请为我投上一票.

我的投票入口 CSDN博客之星我的投票入口

直接点击跳转到系统设置界面, 设置通知定位等等

在操作之前, 你需要info中设置 URLTypes, 如下图所示
iOS 应用内跳转到设置页_第1张图片

直接通过 root=* 什么来配置

NSArray *dataArray = @[

               @{@"系统设置":@"prefs:root=INTERNET_TETHERING"},

               @{@"WIFI设置":@"prefs:root=WIFI"},

               @{@"蓝牙设置":@"prefs:root=Bluetooth"},

               @{@"系统通知":@"prefs:root=NOTIFICATIONS_ID"},

               @{@"通用设置":@"prefs:root=General"},

               @{@"显示设置":@"prefs:root=DISPLAY&BRIGHTNESS"},

               @{@"壁纸设置":@"prefs:root=Wallpaper"},

               @{@"声音设置":@"prefs:root=Sounds"},

               @{@"隐私设置":@"prefs:root=privacy"},

               @{@"APP Store":@"prefs:root=STORE"},

               @{@"Notes":@"prefs:root=NOTES"},

               @{@"Safari":@"prefs:root=Safari"},

               @{@"Music":@"prefs:root=MUSIC"},

               @{@"photo":@"prefs:root=Photos"}

               ];

如果要跳转本应用的设置界面中,使用prefs:root=boundleId的方式,bundled是应用的bundled

像这样, 我直接调到本应用的通知设置界面

{@"应用通知":@"prefs:root=NOTIFICATIONS_ID&path=boundleId"}

通过添加path路径的方式进行

NSArray *dataArray0 = @[

                            @{@"关于本机":@"prefs:root=General&path=About"},

                            @{@"软件升级":@"prefs:root=General&path=SOFTWARE_UPDATE_LINK"},

                            @{@"日期时间":@"prefs:root=General&path=DATE_AND_TIME"},

                            @{@"Accessibility":@"prefs:root=General&path=ACCESSIBILITY"},

                            @{@"键盘设置":@"prefs:root=General&path=Keyboard"},

                            @{@"VPN":@"prefs:root=General&path=VPN"},

                            @{@"壁纸设置":@"prefs:root=Wallpaper"},

                            @{@"声音设置":@"prefs:root=Sounds"},

                            @{@"隐私设置":@"prefs:root=privacy"},

                            @{@"APP Store":@"prefs:root=STORE"},

                            @{@"还原设置":@"prefs:root=General&path=Reset"}
                            ];

之后使用openURL方法

NSURL *url = [NSURL URLWithString:[dataArray0[11] objectForKey:@"应用通知"]];
    if ([UIDevice currentDevice].systemVersion.floatValue <= 10.0) {
        [[UIApplication sharedApplication] openURL:url];
    }else{
        // iOS10 之后, 比较特殊, 只能跳转到设置界面 , UIApplicationOpenSettingsURLString这个只支持iOS8之后.
        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
            // 还可以跳过success这个bool值进行更加精确的判断.
            NSLog(@"跳转成功回调");
        }];
    }

在iOS10之后还有个值得注意的地方, 如果在跳转设置界面之前, 没有申请某种权限, 跳转之后直接crash
便于测试你可以先获取一下通知权限.

if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 8) {
        UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
    }

更多参数配置, 可以在应用中加入更多的设置需求.

prefs:root=General&path=About
prefs:root=General&path=ACCESSIBILITY
prefs:root=AIRPLANE_MODE
prefs:root=General&path=AUTOLOCK
prefs:root=General&path=USAGE/CELLULAR_USAGE
prefs:root=Brightness
prefs:root=General&path=Bluetooth
prefs:root=General&path=DATE_AND_TIME
prefs:root=FACETIME
prefs:root=General
prefs:root=General&path=Keyboard
prefs:root=CASTLE
prefs:root=CASTLE&path=STORAGE_AND_BACKUP
prefs:root=General&path=INTERNATIONAL
prefs:root=LOCATION_SERVICES
prefs:root=ACCOUNT_SETTINGS
prefs:root=MUSIC
prefs:root=MUSIC&path=EQ
prefs:root=MUSIC&path=VolumeLimit
prefs:root=General&path=Network
prefs:root=NIKE_PLUS_IPOD
prefs:root=NOTES
prefs:root=NOTIFICATIONS_ID
prefs:root=Phone
prefs:root=Photos
prefs:root=General&path=ManagedConfigurationList
prefs:root=General&path=Reset
prefs:root=Sounds&path=Ringtone
prefs:root=Safari
prefs:root=General&path=Assistant
prefs:root=Sounds
prefs:root=General&path=SOFTWARE_UPDATE_LINK
prefs:root=STORE
prefs:root=TWITTER
prefs:root=General&path=USAGE
prefs:root=VIDEO
prefs:root=General&path=Network/VPN
prefs:root=Wallpaper
prefs:root=WIFI
prefs:root=INTERNET_TETHERING

扩展阅读
http://blog.csdn.net/ruglcc/article/details/50148375

你可能感兴趣的:([Objective-C开发],Objective-C成长之路)