RecordCheckManager.m 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // RecordCheckManager.m
  3. // StudentDaya
  4. //
  5. // Created by Kyle on 2019/10/9.
  6. // Copyright © 2019 DayaMusic. All rights reserved.
  7. //
  8. #import "RecordCheckManager.h"
  9. #import <AVFoundation/AVFoundation.h>
  10. #import "KSPremissionAlert.h"
  11. #import "TZImageManager.h"
  12. @implementation RecordCheckManager
  13. + (PREMISSIONTYPE)checkPermissionShowAlert:(BOOL)showAlert showInView:(UIView *)displayView {
  14. __block PREMISSIONTYPE bCanRecord = PREMISSIONTYPE_NONE;
  15. if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 7.0) {
  16. AVAuthorizationStatus videoAuthStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
  17. if (videoAuthStatus == AVAuthorizationStatusNotDetermined) {// 未询问用户是否授权
  18. AVAudioSession *audioSession = [AVAudioSession sharedInstance];
  19. if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) {
  20. [audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
  21. if (granted) {
  22. bCanRecord = PREMISSIONTYPE_YES;
  23. } else {
  24. bCanRecord = PREMISSIONTYPE_NO;
  25. }
  26. }];
  27. }
  28. } else if(videoAuthStatus == AVAuthorizationStatusRestricted || videoAuthStatus == AVAuthorizationStatusDenied) {
  29. // 未授权
  30. bCanRecord = PREMISSIONTYPE_NO;
  31. if (showAlert && displayView != nil) {
  32. [self showSetAlertViewInView:displayView];
  33. }
  34. } else{
  35. // 已授权
  36. NSLog(@"已授权");
  37. bCanRecord = PREMISSIONTYPE_YES;
  38. }
  39. }
  40. return bCanRecord;
  41. }
  42. //提示用户进行麦克风使用授权
  43. + (void)showSetAlertViewInView:(UIView *)displayView {
  44. [KSPremissionAlert shareInstanceDisplayImage:CHECKDEVICETYPE_MIC message:@"请开启麦克风访问权限" showInView:displayView cancel:^{
  45. } confirm:^{
  46. [self openSettingView];
  47. }];
  48. };
  49. + (PREMISSIONTYPE)checkCameraPremissionAvaiable:(BOOL)showAlert showInView:(UIView *)displayView {
  50. __block PREMISSIONTYPE canRecordVideo = PREMISSIONTYPE_NONE;
  51. if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 7.0) {
  52. AVAuthorizationStatus videoAuthStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
  53. if (videoAuthStatus == AVAuthorizationStatusNotDetermined) {// 未询问用户是否授权
  54. [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo
  55. completionHandler:^(BOOL granted) {
  56. dispatch_async(dispatch_get_main_queue(), ^{
  57. if (granted) {
  58. canRecordVideo = PREMISSIONTYPE_YES;
  59. } else {
  60. canRecordVideo = PREMISSIONTYPE_NO;
  61. }
  62. });
  63. }];
  64. } else if(videoAuthStatus == AVAuthorizationStatusRestricted || videoAuthStatus == AVAuthorizationStatusDenied) {
  65. // 未授权
  66. canRecordVideo = PREMISSIONTYPE_NO;
  67. if (showAlert && displayView != nil) {
  68. [self showSetCameraAlertViewInView:displayView];
  69. }
  70. } else{
  71. // 已授权
  72. canRecordVideo = PREMISSIONTYPE_YES;
  73. NSLog(@"已授权");
  74. }
  75. }
  76. return canRecordVideo;
  77. }
  78. //提示用户进行相机使用授权
  79. + (void)showSetCameraAlertViewInView:(UIView *)displayView {
  80. [KSPremissionAlert shareInstanceDisplayImage:CHECKDEVICETYPE_CAMREA message:@"请开启相机访问权限" showInView:displayView cancel:^{
  81. } confirm:^{
  82. [self openSettingView];
  83. }];
  84. };
  85. + (PREMISSIONTYPE)checkPhotoLibraryPremissionAvaiable:(BOOL)showAlert showInView:(UIView *__nullable)displayView {
  86. __block PREMISSIONTYPE cansaveVideo = PREMISSIONTYPE_NONE;
  87. if ([PHPhotoLibrary authorizationStatus] == 2) { // 已被拒绝,没有相册权限,将无法保存拍的照片或视频
  88. cansaveVideo = PREMISSIONTYPE_NO;
  89. }
  90. else if ([PHPhotoLibrary authorizationStatus] == 0) {
  91. [[TZImageManager manager] requestAuthorizationWithCompletion:^{
  92. [self checkPhotoLibraryPremissionAvaiable:showAlert showInView:displayView];
  93. }];
  94. }
  95. else {
  96. cansaveVideo = PREMISSIONTYPE_YES;
  97. NSLog(@"已授权");
  98. }
  99. if (showAlert && displayView != nil && cansaveVideo == PREMISSIONTYPE_NO) {
  100. [self showSetAlbumAlertViewInView:displayView];
  101. }
  102. return cansaveVideo;
  103. }
  104. //提示用户进行相机使用授权
  105. + (void)showSetAlbumAlertViewInView:(UIView *)displayView {
  106. [KSPremissionAlert shareInstanceDisplayImage:CHECKDEVICETYPE_CAMREA message:@"请开启相册访问权限" showInView:displayView cancel:^{
  107. } confirm:^{
  108. [self openSettingView];
  109. }];
  110. };
  111. + (void)openSettingView {
  112. if (@available(iOS 10, *)) {
  113. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
  114. } else {
  115. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
  116. }
  117. }
  118. @end