iOS开发中权限再度梳理

本文详细梳理了iOS开发中的各种权限访问,包括语音识别、媒体资料库/Apple Music、Siri、健康数据共享、蓝牙、住宅权限(HomeKit)、社交账号体系、活动与体能训练记录以及广告标识。并提供了开源库JLAuthorizationManager,方便开发者集成和管理权限请求。同时强调了部分权限在使用特定功能时自动访问的特点,以及Xcode中开启相应开关的重要性。
摘要由CSDN通过智能技术生成

疯狂

前言

开源库JLAuthorizationManager :
Objective-C版本
Swift版本

  • 上篇文章iOS开发中的这些权限,你搞懂了吗?介绍了一些常用权限的获取和请求方法,知道这些方法的使用基本上可以搞定大部分应用的权限访问的需求。但是,这些方法并不全面,不能涵盖住所有权限访问的方法。

  • So,笔者在介绍一下剩下的几种权限的访问方法和一些使用上的注意事项,希望能给大家的开发过程带来一丝便利。

  • 最后,笔者将经常使用的权限请求方法封装开源库JLAuthorizationManager送给大家,欢迎大家pull requeststar~~

权限

  • 语音识别;
  • 媒体资料库/Apple Music;
  • Siri;
  • 健康数据共享;
  • 蓝牙;
  • 住宅权限(HomeKit);
  • 社交账号体系权限;
  • 活动与体能训练记录;
  • 广告标识;

语音识别

  • 引入头文件: @import Speech;
  • 首先判断当前应用所处的权限状态,若当前状态为NotDetermined(未确定),此时,需要调用系统提供的请求权限方法,同时也是触发系统弹窗的所在点;
  • 该权限涉及到的类为** SFSpeechRecognizer**,具体代码如下:
- (void)p_requestSpeechRecognizerAccessWithAuthorizedHandler:(void(^)())authorizedHandler
                                         unAuthorizedHandler:(void(^)())unAuthorizedHandler{
   
    
    SFSpeechRecognizerAuthorizationStatus authStatus = [SFSpeechRecognizer authorizationStatus];
    if (authStatus == SFSpeechRecognizerAuthorizationStatusNotDetermined) {
   
         //调用系统提供的权限访问的方法
        [SFSpeechRecognizer requestAuthorization:^(SFSpeechRecognizerAuthorizationStatus status) {
   
            if (status == SFSpeechRecognizerAuthorizationStatusAuthorized) {
   
                dispatch_async(dispatch_get_main_queue(), ^{
   
                     //授权成功后
                    authorizedHandler ? authorizedHandler() : nil;
                });
            }else{
   
                dispatch_async(dispatch_get_main_queue(), ^{
   
                    //授权失败后
                    unAuthorizedHandler ? unAuthorizedHandler() : nil;
                });
            }
        }];
        
    }else if (authStatus == SFSpeechRecognizerAuthorizationStatusAuthorized){
   
        authorizedHandler ? authorizedHandler() : nil;
    }else{
   
        unAuthorizedHandler ? unAuthorizedHandler() : nil;
    }
}
  • 需要注意的是,调用requestAuthorization方法的block回调是在任意的子线程中进行的,如果你需要在授权成功后刷新UI的话,需要将对应的方法置于主线程中进行,笔者将上述方法默认在主线程中进行。后续权限请求方法与此类似,不再赘述。

  • info.plist添加指定的配置信息,如下所示:
    Speech Recognizer

媒体资料库/Apple Music

  • 导入头文件**@import MediaPlayer;**
  • 使用类MPMediaLibrary进行权限访问,代码如下;
- (void)p_requestAppleMusicAccessWithAuthorizedHandler:(void(^)())authorizedHandler
                                   unAuthorizedHandler:(void(^)())unAuthorizedHandler{
   
    MPMediaLibraryAuthorizationStatus authStatus = [MPMediaLibrary authorizationStatus];
    if (authStatus ==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值