问题
I develop iOS app and it uses camera. AVCaptureDeviceInput is used to interface to camera. I checked Authorisation status as
- (void)checkDeviceAuthorizationStatus
{
NSString *mediaType = AVMediaTypeVideo;
[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
if (granted)
{
//Granted access to mediaType
[self setDeviceAuthorized:YES];
}
else
{
//Not granted access to mediaType
dispatch_async(dispatch_get_main_queue(), ^{
[[[UIAlertView alloc] initWithTitle:@"AVCam!"
message:@"AVCam doesn't have permission to use Camera, please change privacy settings"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil] show];
[self setDeviceAuthorized:NO];
});
}
}];
}
When I launch the application, why it does not ask user permission for access to the camera?
So the app does not appear in settings/privacy/camera to manually allow to access camera.
Then show this error "AVCam doesn't have permission to use Camera, please change privacy settings"
and app can't use the camera.
EDIT: That means the app is not allowed to access the camera without asking user permission. Not only camera, camera-roll also has the same problem.
All these things happened after I reset settings in Settings/Reset/Rest All Settings. Before that the app was working well.
回答1:
The problem is solved now. I need to trace back step by step and took me long time to solve the problem. Some people suggested to include NSCamerausageDescription Key. Actually it is necessary for devices with iOS 7 and above. I included the Key but still user permission is not asked yet. Finally I found the problem at Info.plist. There are some extra lines and I deleted three lines. Not sure how they are related to my problem. Those I deleted are
(1)Get info string
(2)Bundle display name
(3)Application Category
After deleting these three lines in the info.plist. Then the app asks the user permission. The point is that you may need to check your Info.plist for such problem.
回答2:
You need to put the name of your app in "Bundle display name" in info.plist
回答3:
Well looking at above contradictory solutions - to remove and to add bundle display name - makes me think of the cause of this bug. I guess this (Apple) bug appears only on devices that had the same app installed at the time it didn't have camera permissions (older versions without camera functions or just bad testflight versions). So if you just delete and install from scratch the bugged app permissions will become okay. Speaking of workaround without uninstalling the existing app, if you change the bundle description (delete or add) in plist then iOS will use the new plist with permissions over already installed as we expect it should.
来源:https://stackoverflow.com/questions/35500405/why-my-ios-app-does-not-ask-user-permission-to-access-camera