zoukankan      html  css  js  c++  java
  • iOS 权限判断 跳转对应设置界面

    相机权限

    1.1 使用说明

    1. 在合适的地方导入#import <AVFoundation/AVFoundation.h>
    2. 使用AVAuthorizationStatus类获取当前权限状态
    3. 在没有权限的情况下弹出alertView提示跳转。

    1.2 代码示例

    • 权限判断
    #import <AVFoundation/AVFoundation.h>
    ...
    // 相机权限判断
    - (void)getPhotoAuthorizationStatus
    {
        AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
        if (authStatus == AVAuthorizationStatusDenied || authStatus == AVAuthorizationStatusRestricted) {
          // 没有权限。弹出alertView
         [self showAlert];
        }else{
        //获取了权限,直接调用相机接口
        }
    
    }
    • 弹出alertView
    - (void)showAlert
    {
    
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"相机权限未开启"
                                                            message:@"相机权限未开启,请进入系统【设置】>【隐私】>【相机】中打开开关,开启相机功能"
                                                           delegate:nil
                                                  cancelButtonTitle:@"取消"
                                                  otherButtonTitles:@"立即开启", nil];
    
     @weakify(self);
    [[alertView rac_buttonClickedSignal] subscribeNext:^(NSNumber *buttonIndex) {
     @strongify(self);
             if ([buttonIndex isEqualToNumber:@1]) {
    #ifdef __IPHONE_8_0 
              //跳入当前App设置界面,
            [[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
    #else 
            //适配iOS7 ,跳入系统设置界面
            [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"prefs:General&path=Reset"]];
    #endif 
        }
    }];
        [alertView show];
    }

    1.3 参数说明

    • 当前权限状态
    typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
     AVAuthorizationStatusNotDetermined = 0, // 用户尚未做出选择这个应用程序的问候
     AVAuthorizationStatusRestricted,   // 此应用程序没有被授权访问的照片数据。可能是家长控制权限
     AVAuthorizationStatusDenied,      // 用户已经明确否认了应用程序访问
     AVAuthorizationStatusAuthorized   // 用户已经授权应用访问相机
    }
    • 跳转到系统设定界面的字段
    About — prefs:root=General&path=About  
    Accessibility — prefs:root=General&path=ACCESSIBILITY  
    AirplaneModeOn— 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 VolumeLimit— 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  
    SoftwareUpdate— 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
    Setting—prefs:root=INTERNET_TETHERING

    注意:需要info中,添加 URL Schemes为 prefs的url

    相册权限

    1.1 使用说明

    1. 在合适的地方导入#import <AssetsLibrary/AssetsLibrary.h>
    2. 使用ALAuthorizationStatus类获取当前权限状态
    3. 在没有权限的情况下弹出alertView提示跳转。

    1.2 代码示例

    代码如下所示,alertView如相机权限中所示.

    //相册权限判断
    - (void)getAlbumAuthorizationStatus
    {
        ALAuthorizationStatus authStatus = [ALAssetsLibrary authorizationStatus];
        if (authStatus == ALAuthorizationStatusDenied || authStatus == ALAuthorizationStatusRestricted) {
            // 没有权限
         [self showAlert];
        }else{
           // 已经获取权限
        }
    
    }

    1.3 参数说明

    typedef NS_ENUM (NSInteger, ALAuthorizationStatus) {
        kCLAuthorizationStatusNotDetermined = 0, // 用户尚未做出选择这个应用程序的问候
        kCLAuthorizationStatusRestricted,        // 此应用程序没有被授权访问的照片数据。可能是家长控制权限
        kCLAuthorizationStatusDenied,            // 用户已经明确否认了这一照片数据的应用程序访问
        kCLAuthorizationStatusAuthorized         // 用户已经授权应用访问照片数据
    } CLAuthorizationStatus;

    定位权限

    1.1 使用说明

    1. 在合适的地方导入#import <CoreLocation/CLLocation.h>
    2. 使用[CLLocationManager authorizationStatus]获取当前权限状态
    3. 在没有权限的情况下弹出alertView提示跳转。

    1.2 代码示例

    代码如下所示,alertView如相机权限中所示.

    - (void)servicesEnabled
    {
        if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted) {
              // 没有权限,
               [self alertAuth];
            }
    }

    1.3 参数说明

    typedef NS_ENUM(int, CLAuthorizationStatus) {
    
     kCLAuthorizationStatusNotDetermined = 0, // 用户尚未做出选择这个应用程序的问候
     kCLAuthorizationStatusRestricted,  // 受限制的,非用户行为,此应用程序没有被授权访问的照片数据。
     kCLAuthorizationStatusDenied,    / 用户已经明确否认了这一应用程序访问
     kCLAuthorizationStatusAuthorizedAlways  定位服务授权状态已经被用户允许在任何状态下获取位置信息。
     kCLAuthorizationStatusAuthorizedWhenInUse  定位服务授权状态仅被允许在使用应用程序的时候。
     kCLAuthorizationStatusAuthorized NS_ENUM_DEPRECATED(10_6, NA, 2_0, 8_0, "Use kCLAuthorizationStatusAuthorizedAlways") __TVOS_PROHIBITED __WATCHOS_PROHIBITED = kCLAuthorizationStatusAuthorizedAlways
    }
  • 相关阅读:
    背水一战 Windows 10 (90)
    背水一战 Windows 10 (89)
    背水一战 Windows 10 (88)
    背水一战 Windows 10 (87)
    背水一战 Windows 10 (86)
    背水一战 Windows 10 (85)
    背水一战 Windows 10 (84)
    背水一战 Windows 10 (83)
    背水一战 Windows 10 (82)
    背水一战 Windows 10 (81)
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7112382.html
Copyright © 2011-2022 走看看