先来看Periscope的两张截图,国内目前还没有见到过细节如此精致的产品。

Periscope

Periscope

想到国内APP的一个一个挨着点的糟糕体验再对比下Periscope,我的心痒痒了。于是在520这个单身狗的日子里我决定写出来封装出来。

iOS的各种权限

1.定位权限 Privacy - Location When In Use Usage Description|Privacy - Location Always Usage Description|Privacy - Location Usage Description

2.蓝牙权限 Privacy - Bluetooth Peripheral Usage Description

3.推送权限 (Target-选项开关打开)

4.媒体资料库权限 Privacy - Media Library Usage Description

5.语音识别权限 Privacy - Speech Recognition Usage Description

6.日历权限 Privacy - Calendars Usage Description

7.相册权限 Privacy - Photo Library Usage Description

8.相机权限 Privacy - Camera Usage Description

9.通讯录权限 Privacy - Contacts Usage Description

10.麦克风权限 Privacy - Microphone Usage Description

11.提醒事项权限 Privacy - Reminders Usage DescriptionPrivacy - Reminders Usage Description

12.运动与健身 Privacy - Motion Usage Description

....

一开始想到了前面3个有代理所以画了个脑图决定规划一下,如下:

1.NSAuthorityStatus

负责管理权限的各种状态

NSAuthorityStatus

2.NSAuthorityProtocol

负责管理定位变化等前面三个权限的代理

时间关系实现了第一个协议,一觉睡醒下午3点了。想着一切从简单调用就匆匆搞完第一个协议开始写下面的调用方法。

NSAuthorityProtocol

3.NSAuthoritySingleton

纯属个人爱好的单例使用方法。仁者见仁智者见智了,图没截完整。

NSAuthoritySingleton

4.NSAuthorityManager

顾名思义管理器,负责查看权限是否开启以及相应的调用开启方法。

NSAuthorityManager

以语音识别权限为例,Bool方法判断是否开启了语音识别的权限用于项目中进行判断处理,

SFSpeechRecognizerAuthorizationStatus status = [SFSpeechRecognizer authorizationStatus];

if (status == SFSpeechRecognizerAuthorizationStatusNotDetermined) {

DLog(@"语音识别权限:未选择权限(NotDetermined)");

return NO;

}else if (status == SFSpeechRecognizerAuthorizationStatusDenied){

DLog(@"语音识别权限:用户拒绝App使用(Denied)");

return NO;

}else if (status == SFSpeechRecognizerAuthorizationStatusRestricted){

DLog(@"语音识别权限:未授权(Restricted)");

return NO;

}

DLog(@"语音识别权限:已授权(Authorized)"); //SFSpeechRecognizerAuthorizationStatusAuthorized

return YES;

void方法则用来开启对应的权限

[SFSpeechRecognizer requestAuthorization:^(SFSpeechRecognizerAuthorizationStatus status) {

if (status == SFSpeechRecognizerAuthorizationStatusNotDetermined) {

DLog(@"语音识别开启权限:未选择权限(NotDetermined)");

}else if (status == SFSpeechRecognizerAuthorizationStatusDenied){

DLog(@"语音识别开启权限:用户拒绝App使用(Denied)");

}else if (status == SFSpeechRecognizerAuthorizationStatusRestricted){

DLog(@"语音识别开启权限:未授权(Restricted)");

}else if (status == SFSpeechRecognizerAuthorizationStatusAuthorized){

DLog(@"语音识别开启权限:已授权(Authorized)");

}

}];

调用方法

判断是否开启,如果未开启则通过单例调用进行开启操作。个别权限需要直接打开设置进行。则在manager文件里加入:

#define kStartProgramAuthority [[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{UIApplicationOpenURLOptionUniversalLinksOnly:@""} completionHandler:^(BOOL success) { }];

即可。

演示效果

点击按钮调用权限

cocoapods

pod 'NSAuthorityManager'

Demo地址

如果对你有帮助那真是太好了,我希望国内程序员做东西越来越走心。太饿了,溜了溜了,闲了再继续完善。

ios 权限提示语_最友好的访问权限之iOS权限提示相关推荐

  1. 提示语_《流浪地球》里洗脑的交通提示语怎么来的?吴京可能要“负全责”

    看完<流浪地球>,相信很多人对"道路千万条,安全第一条,行车不规范,亲人两行泪"这句"北京第三交通委"的交通提示语都印象深刻,甚至可以说看完电影几天 ...

  2. ios 权限提示语_撩妹神技?iOS 微信偷偷上线“拍一拍”

    微信 概要 / 最近微信新功能不断,安卓和 iOS 前后上线了「修改微信号」功能,给了网友们"重新做人"的机会,这不,又来了一个新功能,iOS 的微信可以"拍一拍&quo ...

  3. 提示语_交通安全提示语

    一."一盔一带"提示语 1.安全带-生命带!驾车出行,莫忘安全! 2.安全带是"保命带""救命绳"! 3.乘车系好安全带,发生意外防伤害! ...

  4. 前台离岗提示语_商品住宅前台会客区标牌提示语

    深圳市开元国际物业管理有限公司是国家一级资质企业,创造了具有独立知识产权的"东方管家"物业服务模式,特征集商品住宅前台会客区标牌提示语,要求作品须富含文化底蕴,意境深远,幽默诙谐, ...

  5. ios 蓝牙命令发送_实战恢复cisco 2950交换机的IOS

    本来想用两台思科交换机做实验的,可是通过console口进入其中一台交换机后却发现这个台交换机的IOS文件丢失了.本来正常进入交换机后应该是首先进入到用户模式的,而且提示符应该是">& ...

  6. ios 查看同文件名_实战恢复cisco 2950交换机的IOS

    本来想用两台思科交换机做实验的,可是通过console口进入其中一台交换机后却发现这个台交换机的IOS文件丢失了.本来正常进入交换机后应该是首先进入到用户模式的,而且提示符应该是">& ...

  7. 客服不在线时候的提示语可以修改吗?怎样才可以修改留言提示内容呢?

    客服不在线时候的提示语是可以修改. 第一步 登录电脑版ttkefu软件,点击设置-获取代码 第二步 点击电脑样式,下拉找到留言配置及风格,点击进入设置 第三步 点击基础配置 修改留言前提示语言就可以了 ...

  8. ios 检测是否联网_具透 | 你可能不知道,iOS 10 有一个中国「特供」的联网权限功能...

    9 月底,苹果正式在北京成立了苹果中国研发中心.近几年,我们也在每年更新的 iOS 系统中不断看到,苹果对中国市场的关照.从早前的九宫格输入法,到最近的骚扰电话拦截,都照顾了国内用户的需求. 在 iO ...

  9. 前台离岗提示语_前台卫生温馨提示语

    卫生为健康护航,服务携社区腾飞.你们听说前台卫生温馨提示语有哪些吗?那么学习啦小编为大家整理了前台卫生温馨提示语,欢迎阅览! 前台卫生温馨标语 1. 广告牌匾安装好,以免意外生烦恼. 2. 遵守社会公 ...

最新文章

  1. WAIC 2021 | 中国惠普周信宏:AI基础设施——边缘计算演进及趋势
  2. window 服务(二)
  3. ADO.NET教程(一)
  4. 【转】Dicom基础知识
  5. Enterprise Vault 2007 Series [PST Migration]
  6. while/for 嵌套expect 批量免密码传文件
  7. 统计学习方法第二版知识点合集 - 自用笔记
  8. java 循环效率_Java For循环效率测试
  9. 详解基于J2ME平台下SOAP协议的应用
  10. CentOS 7.4系统安装配置图解教程
  11. 《算法图解》——狄克斯特拉算法
  12. ******2:***常用工具排行榜-《百晓生兵器谱》
  13. 计算机学科 集体备课记录,信息技术学科组集体备课活动记录
  14. 机器学习数学基础学习总结(一)
  15. html编码写出滚动字幕,HTML滚动字幕代码及参数详解_html/css_WEB-ITnose
  16. springboot +vue实现打印PDF(实现批量打印快递单)
  17. 使用Excel获取数据
  18. 前端---js中onmouseover和onmouseout事件
  19. 模拟电子技术基础实验6.5
  20. python找出主力合约价格_Python实盘交易之期货指数映射主力与“自动换月”

热门文章

  1. MFC COM 串口通信
  2. 宇文成 Python 学生信息管理系统
  3. 一年工作 3600 小时,被裁只要半小时
  4. 安卓最新系统_诺基亚安卓手机均已升级为安卓9 谷歌“干儿子”果然名不虚传...
  5. python阈值分割_opencv 阈值分割的具体使用
  6. python middleware_Django框架教程之中间件MiddleWare浅析
  7. Ubuntu下l4d2服务器搭建
  8. 【修真院web小课堂】对一个数组 FILTER、SOME、MAP、FOREACH的操作分别有什么作用?
  9. 前端资源(css,js,图片,接口等)加载过程
  10. 世界500强最新一轮排名出炉,最赚钱的行业竟然是它!?