Why my iOS app does not ask user permission to access camera?

只愿长相守 提交于 2020-05-15 04:48:07

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!