专栏首页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)

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://www.jianshu.com/u/ef991f6d241c复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 用户权限升级到组权限,看完这篇大呼这也太简单了。

    在上篇基于用户的权限设置中,这次我加入组的概念,把所有组的权限规划好之后,以后添加用户只需要赋于所属组就行了,不需要一个一个权限再去设置。

    加菲猫的VFP
  • 小程序开发者权限升级了,你还不知道?

    知晓程序员,专注微信小程序开发! 昨天连胜老师收到了微信公众平台的小程序代码审核结果,一开始并没在意,而后又陆续收到多个代码审核结果,这一下,我感觉好像哪里不对...

    连胜
  • 权限数据库

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    PHY_68
  • AA.Dapper升级了

    AA.Dapper基于dapper进一步封装而成的orm框架,提供增删改查、分页、事务、原生sql的功能,以满足日常的业务开发。

    李明成
  • 对于app监测root权限或者强制升级

    另,"主用户 + Island用户" 情况下: 如果App仅安装在 Island下,当绕不过Root检测时,需在主用户下也安装一下该App,所有的防检测设置在...

    小小咸鱼YwY
  • 官宣!我升级了!!!

    Guide哥
  • 数据库升级

    今天晚上去看服务器,发现数据库的版本是5.7的,看起来挺新的。但是MySQL已经出了8.0了,受不了心中的渴望,所以就直接把源切到8.0新版本了。中国有一些坑,...

    魔王卷子
  • 数据库|权限管理

    用户对数据的库的访问以及对数据库对象的操作都体现在权限上,具有什么样的权限,就能执行什么样的操作。权限对于数据库来说至关重要,它是访问权限设置中的最后一道安全措...

    算法与编程之美
  • 支持Nacos 2.1.0!这套Spring Cloud Gateway+Oauth2终极权限解决方案升级了!

    在微服务系统中实现权限功能时,我们不应该把重复的权限校验功能集成到每个独立的API服务中去,而应该在网关做统一处理,然后通过认证中心去统一认证,这样才是优雅微服...

    macrozheng
  • Transformer又又又升级了?

    Transformer,一个nlp绕不开的话题,现在连推荐和图像也绕不开了。这么强大的模型倒不是没有缺点,例如训练预估慢就是它的硬伤,所以常常受资源/时间等限制...

    炼丹笔记
  • 实战篇:生产库升级,容灾库 Oracle DataGuard 如何升级?

    随着 Oracle 数据库的普遍应用,DataGuard 这个成员基本成为了数据库容灾环境的标配!

    Lucifer三思而后行
  • MySQL数据库升级

    当前不少系统的数据库依旧是MySQL5.6,由于MySQL5.7及MySQL8.0在性能及安全方面有着很大的提升,因此需要升级数据库。本文通过逻辑方式、物理方式...

    July
  • 数据库用户权限管理

    PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(...

    阮键
  • Greenplum数据库权限管理

    每个数据库的逻辑结构对象都有一个所有者,所有者默认拥有所有的权限,不需要重新赋予。

    小徐
  • 数据库分配权限

    我们数据库一般默认使用的都是root用户,超级管理员,拥有全部的权限。但是在实际业务场景中,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以...

    框架师
  • CVE-2019-7304 Ubuntu Linux 权限升级漏洞复现

    在2019年1月,国外安全人员在Ubuntu Linux的默认安装中发现了一个权限提升漏洞。这是由于snapd API中的一个错误,这是一个默认服务。任何本地用...

    墙角睡大觉
  • 【TcaplusDB知识库】如何(批量)读写权限用户添加权限

    TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性...

    Tcaplus君
  • C# WPF实战项目升级了

    之前用Caliburn.Micro搭建的WPF实战项目,CM框架选用了 3.0.3,实际上CM框架目前最新版已经到4.0。173了,所有很有必须升级一...

    用户9127601
  • 升级了R4.2的好处

    然后重新安装了最新版R,并且重新一次性安装了一千多个包,这次居然有意外收获,莫名其妙的我可以在线直接安装GitHub包啦:

    生信技能树

扫码关注腾讯云开发者

领取腾讯云代金券