专栏首页Jacklin攻城狮权限库升级了~

权限库升级了~

关于权限相关的文章已经发了不少:iOS开发中的这些权限,你搞懂了吗?如何获取iOS应用网络权限?iOS开发中权限再度梳理等,这些文章罗列在一起,多少显得有些啰嗦。

这篇核心是简短介绍一下重构后的开源库: JLAuthorizationManagerJLAuthorizationManager-Swift,这个开源库迭代完成时间是2019.02.12,此后,便将该库集成到了当前项目中使用,目前为止,还算比较稳定,特推荐给老铁~

基本特性

  • 覆盖面全,目前支持拍照、相册、蜂窝网络、麦克风、日历、提醒事项、通知、定位、音乐库、语音识别、Siri、蓝牙、健康数据、体能与训练记录等权限访问;
  • 使用方法简单,接口统一,单一权限文件分离,避免因添加无用权限导致提交App Store审核不过的问题;
  • 异步请求权限,在主线程下回调;
  • 提供单例模式下的所有权限访问单一权限访问的两种方式,便于开发者更加灵活的使用;

单一权限文件的使用JLxxxPermission:

  • 基本使用(以请求相册权限为例说明):

OC版本

JLPhotosPermission *permission = [JLPhotosPermission instance];
NSLog(@"current authoriazation status:%@", [self authorizationWithStatus:permission.authorizationStatus]);
NSLog(@"%@添加权限Plist描述", permission.hasSpecificPermissionKeyFromInfoPlist ? @"是" : @"没有");
[permission requestAuthorizationWithCompletion:^(BOOL granted) {         
    NSLog(@"%@ : %@", [self titleWithType:permission.type], granted ? @"已授权" : @"未授权");
}];

Swift版本:

let permission = PhotosPermission()
print("\(type.title) -> status:\(permission.authorizedStatus())")
permission.requestPermission { granted in
    print(granted ? "已授权 -> \(type.title)" : "未授权 -> \(type.title)")
}
  • 请求定位、蓝牙等权限时,需要使用其单例方法shared进行调用,以请求定位信息为例说明:

OC版本

JLLocationAlwaysPermission *permission = [JLLocationAlwaysPermission sharedInstance];
NSLog(@"current authoriazation status:%@", [self authorizationWithStatus:permission.authorizationStatus]);
NSLog(@"%@添加权限Plist描述", permission.hasSpecificPermissionKeyFromInfoPlist ? @"是" : @"没有");
[permission requestAuthorizationWithCompletion:^(BOOL granted) {
    NSLog(@"%@ : %@", [self titleWithType:permission.type], granted ? @"已授权" : @"未授权");
}];

Swift版本:

let permission = LocationAlwaysPermission.shared
print("\(type.title) -> status:\(permission.authorizedStatus())")
permission.requestPermission { granted in
    print(granted ? "已授权 -> \(type.title)" : "未授权 -> \(type.title)")
}

更多细节

  • 参照GitHub上文档介绍中文英文)或者DEMO中的用法;
  • 如您在使用该开源库过程中,遇到一些bug或者需要改进的地方,您可以直接创建issue说明,如您有更好的实现方式,欢迎Pull Request

注意事项

关于该权限库相关更新信息不会再以简书的形式通知更新了,把更新的信息都在微信公众号上通知,感兴趣的可以关注公众号:猿视角(iOSDevSkills)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS开发中的这些权限,你搞懂了吗?

    ![Uploading 144446-b8aca7ba38c5f8c0_695906.png . . .]获取相册权限

    Jacklin999
  • iOS权限完整解决

    Jacklin999
  • 慎用公共变量

    或者使用objc_setAssociatedObject函数将key指定的关联对象设置为nil;

    Jacklin999
  • Spring学习(四)AOP基础

    Spring aop的存在,可以帮助我们少些很多与业务无关但是又冗余的代码,比如,我们可以将计算接口执行时间或者一些通用日志打印的代码抽离出来写到spr...

    虞大大
  • 霍金:人类如果想要生存下去,必须尽快移民至另一个行星

    镁客网
  • 3.1.5 内存管理

    在单道批处理系统阶段,一个系统一个时间段内只执行一个程序,内存的分配及其简单,仅分配给当前运行进程即可。而引入了多道程序并发执行之后,进程之间共享的不仅仅是处理...

    week
  • Android OpenCV摄像头横竖屏问题解决

    我们在用OpenCV自带的摄像头JavaCameraView时,开启后手机竖屏会是旋转90度的效果,非常不友好,下面的代码即可实现我们用JavaCameraVi...

    Vaccae
  • MIX 10 Session下载

    MIX 10已经结束,所有的Session已经放出来了,地址:http://live.visitmix.com/videos。页面上提供了一个下载工具,可惜没有...

    张善友
  • TIMESTAMP with implicit DEFAULT value is deprecated

     这个是在windows server2008下安装时遇到的错误,是在运行mysqld –initialize 这一语句时发生的warnning,这是一个配置错...

    拓荒者
  • 晓说区块链 | 去中心化与中心化的协作,才是区块链技术的未来

    区块链技术的本质之一是去中心化特性,但是单纯依靠这一种技术,是否真地能实现全社会、全行业的“无中介”?如果不能,区块链技术又该以什么样的方式才能发挥它的最大作用...

    维基链WICC

扫码关注云+社区

领取腾讯云代金券