Utilities.m
+(AVAuthorizationStatus)getAuthorizationStatus {
NSString *mediaType = AVMediaTypeAudio;
__block AVAuthorizationStatus AuthStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
if(AuthStatus == AVAuthorizationStatusNotDetermined) {
[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
AuthStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
}];
}
NSLog(@"%d",AuthStatus);
return AuthStatus;
}
+(ALAuthorizationStatus)getALAssetAuthorizationStatus {
ALAssetsLibrary *aLib = [[ALAssetsLibrary alloc]init];
ALAuthorizationStatus alAuthStatus;
[aLib enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:nil failureBlock:nil];
alAuthStatus = [ALAssetsLibrary authorizationStatus];
NSLog(@"Status=>%d", [ALAssetsLibrary authorizationStatus]);
return alAuthStatus;
}
在我的实用程序类中,我编写了这两种方法,目的只是告诉授权状态是什么。
如果用户已经获得allowed
或denied
权限,这些方法可以正常使用,但这些方法首次要求用户获得权限,授权状态为not determined
。如果是第一次用户allow
或deny
我没有获得更新的授权状态。如何处理?
答案 0 :(得分:3)
在requestAccessForMediaType的完成处理程序中,您只需要引用“已授予”'而不是重新调用authorizationStatusForMediaType。布尔值传递给块(您当前没有使用)。
我知道这是一个老问题,但我在寻找相关的东西时偶然发现并且认为我会为可能找到它的其他人回答它。