ITPub博客

首页 > 应用开发 > IT综合 > ios在线直播源码是如何获取相机权限的

ios在线直播源码是如何获取相机权限的

IT综合 作者:云豹科技阿星 时间:2021-08-27 17:00:53 0 删除 编辑

问题描述

在线直播源码没有兼容iOS14的sdk之前的问题描述,拍照完成,取照片的时候,闪退

解决

因为iOS14访问照片库权限进行了细分,iOS14之后有以下分类
如果你拍照的时候,虽然在线直播源码获取了拍照权限,但是如果没有判断照片的存储权限,且在线直播源码的权限设置为仅添加照片或者无,那么你拍完照,然后就会闪退,因为你要拍完照,就要使用,但是使用的权限不够
这里我们需要开的权限是选中的照片或者所有照片

WechatIMG470

 

相机拍照和相册权限代码判断

这里是oc的
swift的通过这个网址转换一下

//
//  MXPermissionCarmera.m
//  xbb
//
//  Created by coderiding on 2020/9/25.
//  Copyright © 2020 xiaobangban. All rights reserved.
//
#import "MXPermissionCarmera.h"
#import <AVFoundation/AVCaptureDevice.h>
#import <AVFoundation/AVMediaFormat.h>
#import <Photos/PHPhotoLibrary.h>
@implementation MXPermissionCarmera
+ (BOOL)isCarmeraPermissionOpen
{
    if (![MXPermissionCarmera isPhotoPermissionOpen]) {
        return false;
    }
    
    AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied) {
         return false;
    }
    return true;
}
+ (BOOL)isPhotoPermissionOpen
{
    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
    if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied)
    {
        return false;
    }
    return true;
}
- (void)showCarmeraAlert {
    if (![MXPermissionCarmera isPhotoPermissionOpen]) {
        [self showPhotoAlert];
        return;
    }
    
    UIAlertController *alert = [UIAlertController alertControllerTitle:@"需要访问您的相机" message:nil preferredStyle:UIAlertControllerStyleAlert clickBtn:@"去设置" cancelBtn:@"取消" clickBlock:^{
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
    } cancelBlock:^{
        
    }];
    [[self topViewController] presentViewController:alert animated:YES completion:nil];
}
- (void)showPhotoAlert {
    UIAlertController *alert = [UIAlertController alertControllerTitle:@"需要访问您的相册" message:nil preferredStyle:UIAlertControllerStyleAlert clickBtn:@"去设置" cancelBtn:@"取消" clickBlock:^{
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
    } cancelBlock:^{
        
    }];
    [[self topViewController] presentViewController:alert animated:YES completion:nil];
}
- (UIViewController *)topViewController
{
    UIViewController *topViewController = [[UIApplication sharedApplication].keyWindow rootViewController];
    
    while (true) {
        if (topViewController.presentedViewController)
        {
            topViewController = topViewController.presentedViewController;
            
        } else if ([topViewController isKindOfClass:[UINavigationController class]] && [(UINavigationController*)topViewController topViewController])
        {
            topViewController = [(UINavigationController *)topViewController topViewController];
            
        } else if ([topViewController isKindOfClass:[UITabBarController class]])
        {
            UITabBarController *tab = (UITabBarController *)topViewController;
            topViewController = tab.selectedViewController;
            
        } else {
            break;
        }
    }
    
    return topViewController;
}
@end

这样,在线直播源码就可以获取完整的相机权限了。
声明:本文由云豹科技转发自三线程序员博客,如有侵权请联系作者删除


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2789211/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-08-24

  • 博文量
    239
  • 访问量
    115535