ios向用户发起权限申请
2017-07-13 本文已影响614人
child_cool
摄像头权限
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
switch (status) {
case AVAuthorizationStatusNotDetermined:{
// 许可对话没有出现,发起授权许可
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
dispatch_async(dispatch_get_main_queue(), ^{
if (granted) {
ScanViewController *scanViewController = [[ScanViewController alloc] initWithType:3];;
[self.navigationController pushViewController:scanViewController animated:NO];
}else{
//用户拒绝
ScanViewController *scanViewController = [[ScanViewController alloc] initWithType:3];
[self.navigationController pushViewController:scanViewController animated:NO];
}
});
}];
}
break;
case AVAuthorizationStatusAuthorized:{
// 已经开启授权,可继续
ScanViewController *scanViewController = [[ScanViewController alloc] initWithType:3];
[self.navigationController pushViewController:scanViewController animated:NO];
}
break;
case AVAuthorizationStatusDenied:
case AVAuthorizationStatusRestricted: {
// 用户明确地拒绝授权,或者相机设备无法访问
ScanViewController *scanViewController = [[ScanViewController alloc] initWithType:3];
[self.navigationController pushViewController:scanViewController animated:NO];
}
break;
default:
break;
}
麦克风权限
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
dispatch_async(dispatch_get_main_queue(), ^{
AVAuthorizationStatus statusVideo = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
AVAuthorizationStatus statusAudio = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
[ws judgeLianMaiLocationWithVideoPermission:statusVideo AudioPermission:statusAudio];
[ws.lianMaiView initUIWithVideoPermission:statusVideo AudioPermission:statusAudio];
});
}];
iOS 隐私权限和通过openURL实现跳转实例
<key>NSPhotoLibraryUsageDescription</key>
<string>访问相册</string>
<key>NSCameraUsageDescription</key>
<string>访问相机</string>
<key>NSContactsUsageDescription</key>
<string>访问通讯录</string>
<key>NSMicrophoneUsageDescription</key>
<string>访问麦克风</string>
<key>NSAppleMusicUsageDescription</key>
<string>访问媒体资料库</string>
<key>NSLocationUsageDescription</key>
<string>访问位置</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>使用期间访问位置</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>始终访问位置</string>
<key>NSCalendarsUsageDescription</key>
<string>访问日历</string>
<key>NSRemindersUsageDescription</key>
<string>访问提醒事项</string>
<key>NSMotionUsageDescription</key>
<string>访问运动与健身</string>
<key>NSHealthUpdateUsageDescription</key>
<string>访问健康更新 </string>
<key>NSHealthShareUsageDescription</key>
<string>访问健康分享</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>访问蓝牙</string>
<key>NSSiriUsageDescription</key>
<string>访问Siri</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>访问语音识别</string>
openUrl
开发中使用以下代码可以实现快速拨打电话
NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];
if
(phoneVersion.floatValue < 10.0) {
//iOS10 以前使用
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@
"[Tel://123456](tel://123456)"
]];
}
else
{
//iOS10 以后使用
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@
"[Tel://123456](tel://123456)"
]
options:@{}
completionHandler:nil];
}
只要给出对应的URL,系统就可以直接跳:
//拨打电话
[NSURL URLWithString:@
"[tel://123456](tel://123456)"
]
//发送短信
[NSURL URLWithString:@
"[sms://123456](sms://123456)"
]
//发邮件
[NSURL URLWithString:@
"[mailto://123456@163.com](mailto://123456@163.com)"
]
//前往App Store
[NSURL URLWithString:@
"itms-[apps://](apps://)"
]
//使用Safari访问网址
[NSURL URLWithString:@
"[http://www.baidu.com](http://www.baidu.com/)"
]
//前往iBook
[NSURL URLWithString:@
"itms-[books://](books://)"
]
//发起Facetime
[NSURL URLWithString:@
"[facetime://](facetime://)"
]
//8、调用 地图Map
[NSURL URLWithString:@
"[maps://](maps://)"
]
//9、调用 Music
[NSURL URLWithString:@
"[music://](music://)"
]
//10、跳转到系统设置相关界面
// iOS10 以前
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@
"prefs:root=LOCATION"
] options:@{} completionHandler:nil];
// iOS10 以后
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@
"App-Prefs:root=LOCATION"
] options:@{} completionHandler:nil];
#pragma mark - 以下为跳转设置的对应方式
//设置
[NSURL URLWithString:UIApplicationOpenSettingsURLString]
//iCloud
[NSURL URLWithString:@
"App-Prefs:root=CASTLE"
]
//WIFI
[NSURL URLWithString:@
"App-Prefs:root=WIFI"
]
//蓝牙
[NSURL URLWithString:@
"App-Prefs:root=Bluetooth"
]
//蜂窝数据
[NSURL URLWithString:@
"App-Prefs:root=MOBILE_DATA_SETTINGS_ID"
]
//通知
[NSURL URLWithString:@
"App-Prefs:root=NOTIFICATIONS_ID"
]
//通用
[NSURL URLWithString:@
"App-Prefs:root=General"
]
//关于手机
[NSURL URLWithString:@
"App-Prefs:root=General&path=About"
]
//辅助功能
[NSURL URLWithString:@
"App-Prefs:root=General&path=ACCESSIBILITY"
]
//日期与时间
[NSURL URLWithString:@
"App-Prefs:root=General&path=DATE_AND_TIME"
]
//键盘设置
[NSURL URLWithString:@
"App-Prefs:root=General&path=Keyboard"
]
//显示与亮度
[NSURL URLWithString:@
"App-Prefs:root=DISPLAY"
]
//墙纸设置
[NSURL URLWithString:@
"App-Prefs:root=Wallpaper"
]
//声音
[NSURL URLWithString:@
"App-Prefs:root=Sounds"
]
//Siri
[NSURL URLWithString:@
"App-Prefs:root=Siri"
]
//隐私
[NSURL URLWithString:@
"App-Prefs:root=Privacy"
]
//定位
[NSURL URLWithString:@
"App-Prefs:root=Privacy&path=LOCATION"
]
//电池电量
[NSURL URLWithString:@
"App-Prefs:root=BATTERY_USAGE"
]
//iTunes Store 与 App Store
[NSURL URLWithString:@
"App-Prefs:root=STORE"
]