iOS开发中的常用权限
在获取权限之前,可以通过一下几种方式向用户请求:
- 在用户打开APP时就向用户请求权限
- 告知用户授权权限后能够获得好处之后,再向用户请求权限
- 在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限
- 在展示系统权限的对话框前,先向用户显示自定义的对话框,若用户选择不允许,默认无操作,若用户选择允许,再展示系统对话框
常用的几种权限包括:联网权限,相册权限,相机、麦克风权限,定位权限,推送权限,通讯录权限,日历、备忘录权限;
注意 这些都需要在info.plist中配置:
添加一个属性,输入Privacy后就会出现自动提示:
- 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?
- 相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?
- 相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?
- 通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
- 蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?
- 语音转文字权限:Privacy - Speech Recognition Usage - Description 是否允许此App使用语音识别?
- 日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?
- 定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
- 定位权限: Privacy - Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据。(定位的需要这么写,防止上架被拒。)
联网权限
头文件:@import CoreTelephony
检测权限:
CTCellularData *cellularData = [[CTCellularData alloc]init];
cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state){
//获取联网状态
switch (state) {
case kCTCellularDataRestricted:
NSLog(@"Restricrted");
break;
case kCTCellularDataNotRestricted:
NSLog(@"Not Restricted");
break;
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"Unknown");
break;
default:
break;
};
};
查询是否有联网功能:
CTCellularData *cellularData = [[CTCellularData alloc]init];
CTCellularDataRestrictedState state = cellularData.restrictedState;
switch (state) {
case kCTCellularDataRestricted:
NSLog(@"Restricrted");
break;
case kCTCellularDataNotRestricted:
NSLog(@"Not Restricted");
break;
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"Unknown");
break;
default:
break;
}
相册权限(iOS8之后):
头文件:@import Photos
检测权限:
PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
switch (photoAuthorStatus) {
case PHAuthorizationStatusAuthorized:
NSLo