• 示例:项目里面有扫码功能,当用户第一次扫码—选择不允许访问相机,再次使用扫码APP就需要... 给用户提示,并做跳转,引导用户到设置界面;    总述: iOS10之前可以进入系统设置的子页面 iOS11之后不允许跳...

    示例:项目里面有扫码功能,当用户第一次扫码—选择不允许访问相机,再次使用扫码APP就需要引导用户到系统的相机页面开启相机权限。类似的功能还有定位、录音、蓝牙、相册等,这些功能都需要给用户提示/引导。

    根据上述情况,市场上的App有两种做法:

    • 不做跳转,给用户提示;
    • 给用户提示,并做跳转,引导用户到设置界面; 

     

    总述:

    iOS10之前可以进入系统设置的子页面
    iOS11之后不允许跳转到设置的子页面,只允许跳转到设置界面(首页)

     
    // 跳转到设置 - 相机 / 该应用的设置界面
    NSURL *url1 = [NSURL URLWithString:@"App-Prefs:root=Privacy&path=CAMERA"];
    // iOS10也可以使用url2访问,不过使用url1更好一些,可具体根据业务需求自行选择
    NSURL *url2 = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    if (@available(iOS 11.0, *)) {
        if ([[UIApplication sharedApplication] canOpenURL:url2]){
            [[UIApplication sharedApplication] openURL:url2 options:@{} completionHandler:nil];
        }
    } else {
        if ([[UIApplication sharedApplication] canOpenURL:url1]){
            if (@available(iOS 10.0, *)) {
                [[UIApplication sharedApplication] openURL:url1 options:@{} completionHandler:nil];
            } else {
                [[UIApplication sharedApplication] openURL:url1];
            }
        }
    }
    
    

    附:iOS 10之前常用的跳转指令(现已经被苹果列为非公开API,有审核风险) 

    • iOS 10 以前:
    蜂窝网络:prefs:root=MOBILE_DATA_SETTINGS_ID
    Wi-Fi:prefs:root=WIFI
    定位服务:prefs:root=LOCATION_SERVICES
    个人热点:prefs:root=INTERNET_TETHERING
    关于本机:prefs:root=General&path=About
    辅助功能:prefs:root=General&path=ACCESSIBILITY
    飞行模式:prefs:root=AIRPLANE_MODE
    锁定:prefs:root=General&path=AUTOLOCK
    亮度:prefs:root=Brightness
    蓝牙:prefs:root=Bluetooth
    时间设置:prefs:root=General&path=DATE_AND_TIME
    FaceTime:prefs:root=FACETIME
    设置:prefs:root=General
    设置 prefs:root=SETTING
    定位服务 prefs:root=LOCATION_SERVICES
    键盘设置:prefs:root=General&path=Keyboard
    iCloud:prefs:root=CASTLE
    iCloud备份:prefs:root=CASTLE&path=STORAGE_AND_BACKUP
    语言:prefs:root=General&path=INTERNATIONAL
    定位:prefs:root=LOCATION_SERVICES
    音乐:prefs:root=MUSIC
    
    • iOS 10 开始
    Wi-Fi: App-Prefs:root=WIFI
    蓝牙: App-Prefs:root=Bluetooth
    蜂窝移动网络: App-Prefs:root=MOBILE_DATA_SETTINGS_ID
    个人热点: App-Prefs:root=INTERNET_TETHERING
    运营商: App-Prefs:root=Carrier
    通知: App-Prefs:root=NOTIFICATIONS_ID
    通用: App-Prefs:root=General
    通用-关于本机: App-Prefs:root=General&path=About
    通用-键盘: App-Prefs:root=General&path=Keyboard
    通用-辅助功能: App-Prefs:root=General&path=ACCESSIBILITY
    通用-语言与地区: App-Prefs:root=General&path=INTERNATIONAL
    通用-还原: App-Prefs:root=Reset
    墙纸: App-Prefs:root=Wallpaper
    Siri: App-Prefs:root=SIRI
    隐私: App-Prefs:root=Privacy
    定位: App-Prefs:root=LOCATION_SERVICES
    Safari: App-Prefs:root=SAFARI
    音乐: App-Prefs:root=MUSIC
    音乐-均衡器: App-Prefs:root=MUSIC&path=com.apple.Music:EQ
    照片与相机: App-Prefs:root=Photos
    FaceTime: App-Prefs:root=FACETIME
    

    iOS 10 绕过审核进行跳转到蓝牙开关的方法

    //亲测iOS 10.3.3 有效
    - (void)turnToBluetooth {
         if (iOS_Version <= 10) {
             [self setBlueTooth];
        } else {//@"App-Prefs:root=General&path=Bluetooth"
            NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
            [[UIApplication sharedApplication] openURL:url];
        }
    }
    
    
    -(NSString *) getDefaultWork{
        NSData *dataOne = [NSData dataWithBytes:(unsigned char []){0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x57,0x6f,0x72,0x6b,0x73,0x70,0x61,0x63,0x65} length:16];
        NSString *method = [[NSString alloc] initWithData:dataOne encoding:NSASCIIStringEncoding];
        return method;
    }
    
    -(NSString *) getBluetoothMethod{
        NSData *dataOne = [NSData dataWithBytes:(unsigned char []){0x6f, 0x70, 0x65, 0x6e, 0x53, 0x65, 0x6e, 0x73, 0x69,0x74, 0x69,0x76,0x65,0x55,0x52,0x4c} length:16];
        NSString *keyone = [[NSString alloc] initWithData:dataOne encoding:NSASCIIStringEncoding];
        NSData *dataTwo = [NSData dataWithBytes:(unsigned char []){0x77,0x69,0x74,0x68,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73} length:11];
        NSString *keytwo = [[NSString alloc] initWithData:dataTwo encoding:NSASCIIStringEncoding];
        NSString *method = [NSString stringWithFormat:@"%@%@%@%@",keyone,@":",keytwo,@":"];
        return method;
    }
    
    -(void)setBlueTooth {
        NSString * defaultWork = [self getDefaultWork];
        NSString * bluetoothMethod = [self getBluetoothMethod];
        NSURL*url=[NSURL URLWithString:@"Prefs:root=Bluetooth"];
        Class LSApplicationWorkspace = NSClassFromString(@"LSApplicationWorkspace");
        [[LSApplicationWorkspace performSelector:NSSelectorFromString(defaultWork)] performSelector:NSSelectorFromString(bluetoothMethod) withObject:url withObject:nil];
    
    }

    参考原文链接:https://www.jianshu.com/p/be09f5709c2c

    参考原文链接:https://www.jianshu.com/p/5fd0ac245e85
     
     

    展开全文
  • iOS 跳转到设置Setting页

    1.跳转到系统设置

    // 英文模式下,到setting页,然后使用navigation path

    //  setting->General&path->Reset

    //  setting->WIFI


    形式:跳转到“一般”中得“时间与日期”

    "prefs:root=General&path=DATE_AND_TIME"

    通过观察,我们发现,访问“一般”中得某项,就需要使用“General&path=xxx”

    同理,

    如果跳转到设置中的大类,比如WIFI

    "prefs:root=WIFI"

    注意:

    OS版本不同,路径可能会发生变化


    2.跳转到设置页面中自己的应用下

    [[UIApplication sharedApplication] openURL:[NSUR URLWithString:UIApplicationOpenSettingsURLString]];

    一般情况下,这个主要是申请了访问系统资源的权限APP才会使用,比如,麦克风、推送、Location Service等!

    注意:

    这个UIApplicationOpenSettingsURLString常量是iOS8之后才可用的

    展开全文
  • iOS跳转到系统设置

    2015-06-24 18:14:25
    大家都知道,在iOS5.0时时可以跳转到系统的设置页的。但是在5.1之后就不可以了。 刚才研究了下这个问题,发现只有iOS8可以跳转到系统设置里自己App的页面。 目前没有找到iOS7怎么跳转过去。如果你知道请一定要留言...

    大家都知道,在iOS5.0时是可以跳转到系统的设置页的。但是在5.1之后就不可以了。

    以下是内置的Settings的iOS5.1及之前支持的URL Scheme:

    About — prefs:root=General&path=About

    Accessibility — prefs:root=General&path=ACCESSIBILITY

    Airplane Mode On — prefs:root=AIRPLANE_MODE

    Auto-Lock — prefs:root=General&path=AUTOLOCK

    Brightness — prefs:root=Brightness

    Bluetooth — prefs:root=General&path=Bluetooth

    Date & Time — prefs:root=General&path=DATE_AND_TIME

    FaceTime — prefs:root=FACETIME

    General — prefs:root=General

    Keyboard — prefs:root=General&path=Keyboard

    iCloud — prefs:root=CASTLE

    iCloud Storage & Backup — prefs:root=CASTLE&path=STORAGE_AND_BACKUP

    International — prefs:root=General&path=INTERNATIONAL

    Location Services — prefs:root=LOCATION_SERVICES

    Music — prefs:root=MUSIC

    Music Equalizer — prefs:root=MUSIC&path=EQ

    Music Volume Limit — prefs:root=MUSIC&path=VolumeLimit

    Network — prefs:root=General&path=Network

    Nike + iPod — prefs:root=NIKE_PLUS_IPOD

    Notes — prefs:root=NOTES

    Notification — prefs:root=NOTIFICATIONS_ID

    Phone — prefs:root=Phone

    Photos — prefs:root=Photos

    Profile — prefs:root=General&path=ManagedConfigurationList

    Reset — prefs:root=General&path=Reset

    Safari — prefs:root=Safari

    Siri — prefs:root=General&path=Assistant

    Sounds — prefs:root=Sounds

    Software Update — prefs:root=General&path=SOFTWARE_UPDATE_LINK

    Store — prefs:root=STORE

    Twitter — prefs:root=TWITTER

    Usage — prefs:root=General&path=USAGE

    VPN — prefs:root=General&path=Network/VPN

    Wallpaper — prefs:root=Wallpaper

    Wi-Fi — prefs:root=WIFI

     

    需要注意的是:这种方式只支持iOS 5.0的系统,从iOS 5.1开始,苹果已经移除了prefs:这个URL Scheme。


    刚才研究了下这个问题,发现只有iOS8可以跳转到系统设置里自己App的页面。

    目前没有找到iOS7怎么跳转过去。如果你知道请一定要留言告知,Thanks!

    下面说下iOS8是如何跳转的,以下是代码:

    1. NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];  
    2. if ([[UIApplication sharedApplication] canOpenURL:url]) {  
    3.    [[UIApplication sharedApplication] openURL:url];  
    4. }  

    如果有感兴趣的同学可以留言大家谈论。
    展开全文
  • 最近做社区项目,有一模块是用户连接WiFi,但是由于苹果限制只能让用户跳转到设置里面的WiFi列表界面连接。跳转到自己的项目中在需要调转的按钮动作中添加如下的代码,就会跳转到设置中自己的app的设置界面,这里会...

    最近做社区项目,有一模块是用户连接WiFi,但是由于苹果限制只能让用户跳转到设置里面的WiFi列表界面连接。

    跳转到自己的项目中


    在需要调转的按钮动作中添加如下的代码,就会跳转到设置中自己的app的设置界面,这里会有通知和位置权限的设置

    
    NSURL * url = [NSURLURLWithString:UIApplicationOpenSettingsURLString];
    
    if([[UIApplicationsharedApplication] canOpenURL:url]) {
    
    NSURL*url =[NSURLURLWithString:UIApplicationOpenSettingsURLString];           [[UIApplicationsharedApplication] openURL:url];  
    
    }

    测试注意:新项目测试,需要请求一下位置权限或者通知权限,才可以跳进自己的app设置里面,如果没有任何权限请求,就只能跳到系统的设置界面


    跳转到系统设置的其他界面


    在点击跳转的按钮动作中添加如下代码

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
    

    在项目中的info中添加 URL types

    添加 URL Schemes 为 prefs的url


    这里写图片描述

    这样点击就可以跳转到wifi设置界面


    跳转到其他的界面的字段

     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    //打开Brightness(亮度)设置界面
      prefs:root=Bluetooth    //打开蓝牙设置
      prefs:root=General&path=DATE_AND_TIME    //日期与时间设置
      prefs:root=FACETIME    //打开FaceTime设置
      prefs:root=General    //打开通用设置
      prefs:root=General&path=Keyboard    //打开键盘设置
      prefs:root=CASTLE    //打开iClound设置
      prefs:root=CASTLE&path=STORAGE_AND_BACKUP    //打开iCloud下的储存空间
      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    //打开设置下的safari设置
      prefs:root=General&path=Assistant    //打开siri不成功
      prefs:root=Sounds    //打开设置下的声音设置
      prefs:root=General&path=SOFTWARE_UPDATE_LINK    //打开通用下的软件更新
      prefs:root=STORE    //打开通用下的iTounes Store和App Store设置
      prefs:root=TWITTER    //打开设置下的twitter设置
      prefs:root=FACEBOOK    //打开设置下的Facebook设置
      prefs:root=General&path=USAGE    //打开通用下的用量
      prefs:root=VIDEO    
      prefs:root=General&path=Network/VPN        //打开通用下的vpn设置
      prefs:root=Wallpaper    //打开设置下的墙纸设置
      prefs:root=WIFI    //打开wifi设置
      prefs:root=INTERNET_TETHERING

    参考自:简书作者:Biharry

    更多: iOS在App中打开设置中的指定模块

    展开全文
  • 直接点击跳转到系统设置界面, 设置通知定位等等在操作之前, 你需要info中设置 URLTypes, 如下图所示 直接通过 root=* 什么来配置 NSArray *dataArray = @[ @{@"系统设置":@"prefs:root=INTERNET_TET

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

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

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

    在操作之前, 你需要info中设置 URLTypes, 如下图所示
    演示图

    直接通过 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

    展开全文
  • iOS开发中,有可能就需要跳转到系统的设置界面去配置一些参数,下面就简单介绍一下如何跳转到界面中, 1、在UIApplication头文件中有一个属性UIApplicationOpenSettingsURLString用于打开系统的设置界面,但是只...
  • iOS应用内跳转到系统设置 设置跳转有三种方式,每一种的使用场景都不同。 并且你跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如(通讯录,通知,定位等)。否则,会引起崩溃。 ...
  • ios跳转wifi设置页面

    2017-04-27 18:31:21
    2、跳转自己APP的设置页面: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 3、跳转WiFi设置页面(有区别,注意看): ①iOS 10之前: [[UIAppl
  • iOS自我们熟悉以来,就一直与Android有着不一样的体验, 系统更加流畅,使用更加舒适, ...就比如iOS10以前,我们开发的应用想要跳转到系统设置,跳转到蓝牙,跳转到WIFI… iOS开发工程师们都很熟悉,系统给
  • iOS10 跳转系统设置

    2018-01-23 09:10:19
    iOS10更新后,系统设置跳转被禁用,只能跳转App设置? NO, NO, NO, 看这里,又可以换个姿势愉快的跳转啦。其实方法很简单,例如原有跳转Wi-Fi设置是”prefs:root=WIFI”,新的写法是”App-Prefs:root=WIFI”。怎么...
  • 之前做蓝牙小应用的时候有个需求是:进入app发现没有打开蓝牙,需要切换系统设置页面的蓝牙中。开始以为苹果不支持直接从应用跳转,需要用到私有API什么的,后来发现,这个功能其实非常好实现! 跳转设置蓝牙页面...
  • 在项目中,我们经常会碰到使用位置的需求。当用户设置app不允许使用位置的时候,最好...在需要调转的按钮动作中添加如下的代码,就会跳转到设置中自己的app的设置界面,这里会有通知和位置权限的设置 NSURL * url = [N
  • iOS App跳转权限设置

    2019-04-12 18:26:31
    开启照相机 #import <AVFoundation/AVFoundation.h> - (void)getCameraJurisdiction { NSString *mediaType = AVMediaTypeVideo;// Or AVMediaTypeAudio ... AVAuthorizationStatus authStatus = [AVCaptur.....
  • 在项目中,我们经常会碰到使用位置的需求。当用户设置app不允许使用...跳转到自己的项目中在需要调转的按钮动作中添加如下的代码,就会跳转到设置中自己的app的设置界面,这里会有通知和位置权限的设置NSURL * url = [N
  • iOS 11跳转系统设置

    2018-03-29 10:11:37
    就找过很多资料去实现跳转,最后好像是在stackoverflow上看到一个最取巧的方式,以Wi-Fi列表为例,官方给的URL格式如下:app-prefs:root=WIFI,只需要改为:app-Prefs:root=WIFI就可以在iOS 10以上跳转...
  • 在我们的应用中有时候需要对应用的权限做一些修改,但是有无法直接的在App中进行操作,有些需要用户到设置中心去进行修改。怎么办呢?直接告诉客户去系统中心修改,呃(⊙o⊙)…客户可能会觉得太麻烦,今天呢我们来说...
  •  在很多的APP中需要设置系统的内容的时候,APP内部会通过某种跳转的方式跳转到系统的setting的功能,但是iOS5.1以后就不能正常调用了,下面写出转系统setting的两种方式: 方式一: 跳WiFi设置界面、定位服务...
  • 最近一段时间在做推送,关于从自己app跳转到系统设置页面的方法可谓众说纷纭,以下针对不同的ios...一、跳转与推送有关的设置页面的方法有三种,具体选择哪种,取决于你想跳转到设置页面的具体程度: 方法(1)[[UIAp
1 2 3 4 5 ... 20
收藏数 57,391
精华内容 22,956